Konwolucyjne sieci neuronowe¶
Dziś spróbujemy stworzyć i wytrenować prostą sieć konwolucyjną do rozpoznawania, co znajduje się na obrazie. Następnie omówimy kwestię identyfikowania obiektów na obrazie, oraz porozmawiamy o wykorzystaniu gotowej już sieci.
Problem klasyfikacji obrazów¶
Jak się za to zabrać? Naiwnym podejściem byłaby próba ręcznej specyfikacji pewnych cech (niemowlęta mają duże głowy, szczoteczki są długie, etc.). Szybko jednak stwierdziliśmy, że nawet dla niewielkiego zbioru kategorii jest to tytaniczna praca bez gwarancji sukcesu. Co więcej, istnieje wiele czynników zniekształcających zawartość naszych zdjęć. Obiekty mogą być przedstawiane z różnych ujęć, w różnych warunkach oświetleniowych, w różnej skali, częściowo niewidoczne, ukryte w tle...
Wszystkie wymienione problemy są skutkiem istnienia semantycznej przepaści między tym, jak reprezentowane są nasze dane wejściowe (tablica liczb), a tym, czego w nich szukamy, czyli kategorii i cech: zwierząt, nosów, głów, itp. Zamiast więc próbować samodzielnie napisać funkcję $f(x)$, spróbujemy skorzystać z dobrodziejstw uczenia maszynowego, aby automatycznie skonstruować reprezentację wejścia właściwą dla postawionego sobie zadania (a przynajmniej lepszą od pierwotnej). I tu z pomocą przychodzą nam konwolucyjne sieci neuronowe. Do tego trzeba zrozumieć, czym jest konwolucja (inaczej: splot), a do tego najlepiej nadają się ilustracje, jak to działa.
Konwolucja¶
Konwolucja (splot) to działanie określone dla dwóch funkcji, dające w wyniku inną, która może być postrzegana jako zmodyfikowana wersja oryginalnych funkcji.
Z naszego punktu widzenia polega to na tym, że mnożymy odpowiadające sobie elementy z dwóch macierzy: obrazu, oraz mniejszej, nazywanej filtrem (lub kernelem. Następnie sumujemy wynik i zapisujemy do macierzy wynikowej na odpowiedniej pozycji. Proces powtarza się aż do momentu przeskanowania całego obrazu. Taki filtr wykrywa, czy coś do niego pasuje w danym miejscu, i z tego wynika zdolność semantycznej generalizacji sieci - uczymy się cech, a wykrywamy je potem w dowolnym miejscu. Przydatne pojęcia
Stride¶
Stride to inaczej krok algorytmu, albo przesunięcie. Określa co ile komórek macierzy następuje aplikacja operatora konwolucji. Jeśli stride wynosi 1 a operator konwolucji ma rozmiar np. 3 x 3, to każdy piksel (z wyjątkiem skrajnych narożnych pikseli) będzie uczestniczył w wielu operacjach konwolucji. Jeśli natomiast krok wyniósłby 3, to każdy piksel uczestniczyłby tylko jednokrotnie w tych operacjach. Należy pamiętać, że krok stosujemy zarówno w poziomie, jak i pionie. Najczęściej w obu kierunkach wykorzystuje się ten sam krok.
Padding¶
Padding to inaczej wypełnienie krawędzi obrazu. Określa, w jaki sposób będą traktowane skrajne piksele. Jeśli padding wynosi 0, to skrajne piksele będą uczestniczyły w operacjach konwolucji rzadziej, niż pozostałe piksele (oczywiście jest to również uzależnione od wartości kroku). Aby zniwelować ten efekt, możemy dodać wypełnienie wokół całego obrazu. Te dodatkowe piksele mogą być zerami, albo mogą być również jakimiś uśrednionymi wartościami pikseli sąsiednich. Wypełnienie zerami oznacza de facto obramowanie całego obrazu czarną ramkną.
Pooling¶
Pooling jest procesem wykorzystywanym do redukcji rozmiaru obrazu. Występują 2 warianty: max-pooling oraz avg-pooling. Pozwala on usunąć zbędne dane, np. jeżeli filtr wykrywa linie, to istnieje spora szansa, że linie te ciągną się przez sąsiednie piksele, więc nie ma powodu powielać tej informacji. Dzięki temu wprowadzamy pewną inwariancję w wagach sieci i jesteśmy odporni na niewielkie wahania lokalizacji informacji, a skupiamy się na "większym obrazie".
Sposoby redukcji przeuczenia¶
- warstwa dropout - wyłączanie losowych neuronów w trakcie uczenia,
- regularyzacja wag - ograniczenie sumy wartości wag,
- metoda wczesnego stopu (early stopping) - zatrzymanie uczenia, jeśli proces uczenia nie poprawia wyników,
- normalizacja paczki (batch normalization) - centrowanie i skalowanie wartości wektorów w obrębie batcha danych,
- rozszerzanie danych (data augmentation) - generowanie lekko zaburzonych danych, na podstawie danych treningowych,
- lub... więcej danych.
Budowa sieci CNN do klasyfikacji obrazów¶
Sieć konwolucyjna składa się zawsze najpierw, zgodnie z nazwą, z części konwolucyjnej, której zadaniem jest wyodrębnienie przydatnych cech z obrazu za pomocą filtrów, warstw poolingowych etc.
Warstwa konwolucyjna sieci neuronowej składa się z wielu filtrów konwolucyjnych działających równolegle (tj. wykrywających różne cechy). Wagi kerneli, początkowo zainicjalizowane losowo, są dostrajane w procesie uczenia. Wynik działania poszczególnych filtrów jest przepuszczany przez funkcję nieliniową. Mamy tu do czynienia z sytuacją analogiczną jak w MLP: najpierw wykonujemy przekształcenie liniowe, a potem stosujemy funkcję aktywacji. Funkcji aktywacji nie stosuje się jendak po warstawch poolingowych, są to stałe operacje nie podlegające uczeniu.
W celu klasyfikacji obrazu musimy później użyć sieci MLP. Jako że wejściem do sieci MLP jest zawsze wektor, a wyjściem warstwy konwolucyjnej obraz. Musimy zatem obraz przetworzony przez filtry konwolucyjne sprowadzić do formy wektora, tzw. embedding-u / osadzenia, czyli reprezentacji obrazu jako punktu w pewnej ciągłej przestrzeni. Służy do tego warstwa spłaszczająca (flatten layer), rozwijająca macierze wielkowymiarowe na wektor, np $10 \times 10 \times 3$ na $300 \times 1$.
Część konwolucyjna nazywa się często backbone, a część MLP do klasyfikacji head. Głowa ma zwykle 1-2 warstwy w pełni połączone, z aktywacją softmax w ostatniej warstwie. Czasem jest nawet po prostu pojedynczą warstwą z softmaxem, bo w dużych sieciach konwolucyjnych ekstrakcja cech jest tak dobra, że taka prosta konstrukcja wystacza do klasyfikacji embeddingu.
import torch
import torchvision
import torchvision.transforms as transforms
Wybierzmy rodzaj akceleracji. Współczesne wersje PyTorch wspierają akcelerację nie tylko na kartach Nvidii i AMD, ale również na procesorach Apple z serii M. Obsługa AMD jest realizowana identycznie jak CUDA natomiast MPS (Apple) ma nieco inne API do sprawdzania dostępności i wybierania urządzenia.
Zapisujemy wybrane urządzenie do zmiennej device, dzięki czemu w dalszych częściach kodu już nie będziemy musieli o tym myśleć.
if torch.cuda.is_available():
device = torch.device("cuda:0")
elif torch.backends.mps.is_available():
device = torch.device("mps")
print(device)
cuda:0
W pakiecie torchvision mamy funkcje automatycznie pobierające niektóre najbardziej popularne zbiory danych z obrazami.
W tym ćwiczeniu wykorzystamy zbiór FashionMNIST, który zawiera małe (28x28) zdjęcia ubrań w skali szarości. Zbiór ten został stworzony przez Zalando i jest "modowym" odpowiednikiem "cyferkowego" MNIST-a, jest z nim kompatybilny pod względem rozmiarów i charakterystyki danych, ale jest od MNIST-a trudniejszy w klasyfikacji.
Do funkcji ładujących zbiory danych możemy przekazać przekształcenie, które powinno zostać na nim wykonane. Przekształcenia można łączyć przy użyciu transforms.Compose. W tym przypadku przekonwertujemy dane z domyślnej reprezentacji PIL.Image na torch-owe tensory.
Pobrany dataset przekazujemy pod kontrolę DataLoader-a, który zajmuje się podawaniem danych w batch-ach podczas treningu.
transform = transforms.Compose([transforms.ToTensor()])
batch_size = 32
trainset = torchvision.datasets.FashionMNIST(
root="./data", train=True, download=True, transform=transform
)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True)
testset = torchvision.datasets.FashionMNIST(
root="./data", train=False, download=True, transform=transform
)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=True)
classes = (
"top",
"Trouser",
"Pullover",
"Dress",
"Coat",
"Sandal",
"Shirt",
"Sneaker",
"Bag",
"Ankle boot",
)
print(type(testset[0][0]))
Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to ./data/FashionMNIST/raw/train-images-idx3-ubyte.gz
100%|██████████| 26.4M/26.4M [00:02<00:00, 12.6MB/s]
Extracting ./data/FashionMNIST/raw/train-images-idx3-ubyte.gz to ./data/FashionMNIST/raw Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw/train-labels-idx1-ubyte.gz
100%|██████████| 29.5k/29.5k [00:00<00:00, 201kB/s]
Extracting ./data/FashionMNIST/raw/train-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to ./data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz
100%|██████████| 4.42M/4.42M [00:01<00:00, 3.75MB/s]
Extracting ./data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to ./data/FashionMNIST/raw Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz
100%|██████████| 5.15k/5.15k [00:00<00:00, 6.20MB/s]
Extracting ./data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/FashionMNIST/raw <class 'torch.Tensor'>
Zobaczmy, co jest w naszym zbiorze danych. Poniżej kawałek kodu, który wyświetli nam kilka przykładowych obrazków. Wartości pikseli są znormalizowane do przedziału [0,1].
import matplotlib.pyplot as plt
import numpy as np
def imshow(img):
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0)))
plt.axis("off")
plt.show()
dataiter = iter(trainloader)
images, labels = next(dataiter)
def grid_show(images, nrow=8):
imshow(torchvision.utils.make_grid(images, nrow=nrow))
def print_grid(labels, nrow=8):
rows = [labels[n : n + nrow] for n in range(0, len(labels), nrow)]
for r in rows:
print(" ".join(f"{classes[c]:10s}" for c in r))
grid_show(images)
print_grid(labels)
Bag Coat Ankle boot Sandal Trouser Sandal Bag Trouser Bag Trouser Bag Shirt Sneaker Sandal Dress Sneaker Sandal Pullover Dress Bag Dress Trouser Sneaker Coat Coat Ankle boot top Sandal top Pullover top Sandal
LeNet¶
LeNet to bardzo znany, klasyczny model sieci konwolucyjnej.
Warstwy:
- obraz
- konwolucja, kernel $5 \times 5$, bez paddingu, 6 kanałów (feature maps)
- average pooling, kernel $2 \times 2$, stride 2
- konwolucja, kernel $5 \times 5$, bez paddingu, 16 kanałów (feature maps)
- average pooling, kernel $2 \times 2$, stride 2
- warstwa w pełni połączona, 120 neuronów na wyjściu
- warstwa w pełni połączona, 84 neurony na wyjściu
- warstwa w pełni połączona, na wyjściu tyle neuronów, ile jest klas
Zadanie 1 (2 punkty)¶
Zaimplementuj wyżej opisaną sieć, używając biblioteki PyTorch. Wprowadzimy sobie jednak pewne modyfikacje, żeby było ciekawiej:
- w pierwszej warstwie konwolucyjnej użyj 20 kanałów (feature maps)
- w drugiej warstwie konwolucyjnej użyj 50 kanałów (feature maps)
- w pierwszej warstwie gęstej użyj 300 neuronów
- w drugiej warstwie gęstej użyj 100 neuronów
Przydatne elementy z pakietu torch.nn:
Conv2d()AvgPool2d()Linear()
Z pakietu torch.nn.functional:
relu()
import torch.nn as nn
class LeNet(nn.Module):
def __init__(self):
super().__init__()
self.sequence = nn.Sequential(
nn.Conv2d(1, 20, 5),
nn.ReLU(),
nn.AvgPool2d(2, 2),
nn.Conv2d(20, 50, 5),
nn.ReLU(),
nn.AvgPool2d(2, 2),
nn.Flatten(),
nn.Linear(800, 300),
nn.ReLU(),
nn.Linear(300, 100),
nn.ReLU(),
nn.Linear(100, len(classes)),
)
def forward(self, x):
return self.sequence(x)
lenet = LeNet()
param_num = sum(p.numel() for p in lenet.parameters())
print(param_num)
assert param_num == 132704
print("Solution is correct!")
296980
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-7-54afb63c0f97> in <cell line: 4>() 2 param_num = sum(p.numel() for p in lenet.parameters()) 3 print(param_num) ----> 4 assert param_num == 132704 5 print("Solution is correct!") AssertionError:
Do treningu użyjemy stochastycznego spadku po gradiencie (SGD), a jako funkcję straty Categorical Cross Entropy. W PyTorch-u funkcja ta operuje na indeksach klas (int), a nie na wektorach typu one-hot (jak w Tensorflow).
import torch.optim as optim
net = LeNet().to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
Zadanie 2 (1 punkt)¶
Uzupełnij pętlę uczącą sieć na podstawie jej predykcji. Oblicz (wykonaj krok do przodu) funkcję straty, a następnie przeprowadź propagację wsteczną i wykonaj krok optymalizatora.
net.train()
for epoch in range(5):
for inputs, labels in trainloader:
inputs = inputs.to(device)
labels = labels.to(device)
y_pred = net(inputs)
y_pred = y_pred.to(device)
loss = criterion(y_pred, labels)
loss.backward()
optimizer.step()
optimizer.zero_grad()
Zobaczmy na kilku przykładach jak działa wytrenowana sieć.
dataiter = iter(testloader)
images, labels = next(dataiter)
grid_show(images)
print("Ground Truth")
print_grid(labels)
outputs = net(images.to(device))
_, predicted = torch.max(outputs, 1)
print()
print("Predicted")
print_grid(predicted)
Ground Truth Pullover Shirt Coat Dress Dress Trouser Shirt Bag Sneaker Shirt Coat Trouser Trouser Sneaker Shirt Dress Sandal top Sneaker Sneaker Coat Pullover Bag Bag Coat Trouser Bag Pullover Trouser top top Sandal Predicted Shirt Coat Coat Dress Pullover Trouser Pullover Bag Sneaker Coat Pullover Trouser Trouser Sneaker Shirt Dress Sandal top Sneaker Sneaker Pullover Coat Bag Bag Pullover Trouser Bag Shirt Trouser top top Sneaker
Obliczmy dokładności (accuracy) dla zbioru danych.
correct = 0
total = 0
net.eval()
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images.to(device))
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels.to(device)).sum().item()
print(f"Accuracy of the network on the 10000 test images: {100 * correct // total} %")
Accuracy of the network on the 10000 test images: 80 %
Skomentuj wyniki:
Otrzymany wynik jest naprawdę dobry szczególnie biorąc pod uwagę prostą implementację.
Znając ogólny wynik klasyfikacji dla zbioru przeanalizujmy dokładniej, z którymi klasami jest największy problem.
Zadanie 3 (1 punkt)¶
Oblicz dokładność działania sieci (accuracy) dla każdej klasy z osobna. Podczas oceniania skuteczności modelu nie potrzebujemy, aby gradienty się liczyły. Możemy zatem zawrzeć obliczenia w bloku with torch.no_grad():
net.eval()
class_correct = {cls: 0 for cls in classes}
class_total = {cls: 0 for cls in classes}
with torch.no_grad():
for inputs, labels in trainloader:
inputs, labels = inputs.to(device), labels.to(device)
outputs = net(inputs)
_, predictions = torch.max(outputs, 1)
for i in range(len(predictions)):
class_total[classes[labels[i]]] += 1
if predictions[i] == labels[i]:
class_correct[classes[predictions[i]]] += 1
for cls in classes:
accuracy = 100 * class_correct[cls] // class_total[cls]
print(f"Accuracy for {cls}: {accuracy}%")
Accuracy for top: 86% Accuracy for Trouser: 96% Accuracy for Pullover: 51% Accuracy for Dress: 74% Accuracy for Coat: 83% Accuracy for Sandal: 94% Accuracy for Shirt: 52% Accuracy for Sneaker: 89% Accuracy for Bag: 93% Accuracy for Ankle boot: 95%
Skomentuj wyniki:
Jak można zauważyć model najgorzej radzi sobie z klasą Shirt jednak wyniki dla klasy Coat oraz Pullover też można by poprawić
Detekcja obiektów¶
Problem detekcji polega na nie tylko sklasyfikowaniu obiektów na obrazie, ale również wyznaczeniu jego dokładnego położenia w postaci bounding-box-u. Choć jest to problem odmienny od klasyfikacji obrazów, to w praktyce ściśle z nim powiązany - modele do detekcji obiektów przeważnie do pewnego momentu wyglądają tak samo, jak modele klasyfikacji. Jednak pod koniec sieć jest dzielona na 2 wyjścia: jedno to standardowa klasyfikacja, a drugie to regresor określający pozycję obiektu na obrazie, tzw. bounding box. Najpopularniejszymi przykładami takich sieci są YOLO i Mask R-CNN. Zbiór danych też jest odpowiednio przygotowany do tego zadania i oprócz właściwych zdjęć zawiera również listę bounding-box-ów i ich etykiety.
Zobaczymy jak działa detekcja na przykładzie już wytrenowanej sieci neuronowej. Autorzy skutecznych sieci często udostępniają ich wagi online, dzięki czemu jeżeli mamy doczynienia z analogicznym problemem jak ten, do którego dana sieć była przygotowana możemy z niej skorzystać "prosto z pudełka".
PyTorch pozwala nam na pobranie wytrenowanych wag dla kilku najpopularniejszych modeli. Sprawdzimy jak z tego skorzystać.
from torchvision.models import detection
import cv2
from PIL import Image
import urllib
Poniżej znajduje się funkcja pozwalająca wczytać obraz z sieci. Przyda się do testowania działania sieci.
def url_to_image(url):
resp = urllib.request.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
Model, którym się zajmiemy to Faster R-CNN, który był trenowany na zbiorze COCO. Poniżej znajduje się lista klas (etykiet) dla tego zbioru danych.
classes = [
"__background__",
"person",
"bicycle",
"car",
"motorcycle",
"airplane",
"bus",
"train",
"truck",
"boat",
"traffic light",
"fire hydrant",
"street sign",
"stop sign",
"parking meter",
"bench",
"bird",
"cat",
"dog",
"horse",
"sheep",
"cow",
"elephant",
"bear",
"zebra",
"giraffe",
"hat",
"backpack",
"umbrella",
"handbag",
"tie",
"shoe",
"eye glasses",
"suitcase",
"frisbee",
"skis",
"snowboard",
"sports ball",
"kite",
"baseball bat",
"baseball glove",
"skateboard",
"surfboard",
"tennis racket",
"bottle",
"plate",
"wine glass",
"cup",
"fork",
"knife",
"spoon",
"bowl",
"banana",
"apple",
"sandwich",
"orange",
"broccoli",
"carrot",
"hot dog",
"pizza",
"donut",
"cake",
"chair",
"couch",
"potted plant",
"bed",
"mirror",
"dining table",
"window",
"desk",
"toilet",
"door",
"tv",
"laptop",
"mouse",
"remote",
"keyboard",
"cell phone",
"microwave",
"oven",
"toaster",
"sink",
"refrigerator",
"blender",
"book",
"clock",
"vase",
"scissors",
"teddy bear",
"hair drier",
"toothbrush",
]
colors = np.random.randint(0, 256, size=(len(classes), 3))
Inizjalizacja modelu ResNet50-FPN wytrenowanymi wagami. Inicjalizujemy zarówno sieć backbone jak i RCNN.
model = detection.fasterrcnn_resnet50_fpn(
weights=detection.FasterRCNN_ResNet50_FPN_Weights.DEFAULT,
weights_backbone=torchvision.models.ResNet50_Weights.DEFAULT,
progress=True,
num_classes=len(classes),
).to(device)
model.eval()
Downloading: "https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth" to /root/.cache/torch/hub/checkpoints/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth 100%|██████████| 160M/160M [00:01<00:00, 160MB/s]
FasterRCNN(
(transform): GeneralizedRCNNTransform(
Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
Resize(min_size=(800,), max_size=1333, mode='bilinear')
)
(backbone): BackboneWithFPN(
(body): IntermediateLayerGetter(
(conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
(bn1): FrozenBatchNorm2d(64, eps=0.0)
(relu): ReLU(inplace=True)
(maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
(layer1): Sequential(
(0): Bottleneck(
(conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(64, eps=0.0)
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(64, eps=0.0)
(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(256, eps=0.0)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): FrozenBatchNorm2d(256, eps=0.0)
)
)
(1): Bottleneck(
(conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(64, eps=0.0)
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(64, eps=0.0)
(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(256, eps=0.0)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(64, eps=0.0)
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(64, eps=0.0)
(conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(256, eps=0.0)
(relu): ReLU(inplace=True)
)
)
(layer2): Sequential(
(0): Bottleneck(
(conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(128, eps=0.0)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(128, eps=0.0)
(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(512, eps=0.0)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): FrozenBatchNorm2d(512, eps=0.0)
)
)
(1): Bottleneck(
(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(128, eps=0.0)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(128, eps=0.0)
(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(512, eps=0.0)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(128, eps=0.0)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(128, eps=0.0)
(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(512, eps=0.0)
(relu): ReLU(inplace=True)
)
(3): Bottleneck(
(conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(128, eps=0.0)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(128, eps=0.0)
(conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(512, eps=0.0)
(relu): ReLU(inplace=True)
)
)
(layer3): Sequential(
(0): Bottleneck(
(conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): FrozenBatchNorm2d(1024, eps=0.0)
)
)
(1): Bottleneck(
(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
)
(3): Bottleneck(
(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
)
(4): Bottleneck(
(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
)
(5): Bottleneck(
(conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(256, eps=0.0)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(256, eps=0.0)
(conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(1024, eps=0.0)
(relu): ReLU(inplace=True)
)
)
(layer4): Sequential(
(0): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(512, eps=0.0)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(512, eps=0.0)
(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(2048, eps=0.0)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): FrozenBatchNorm2d(2048, eps=0.0)
)
)
(1): Bottleneck(
(conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(512, eps=0.0)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(512, eps=0.0)
(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(2048, eps=0.0)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): FrozenBatchNorm2d(512, eps=0.0)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(bn2): FrozenBatchNorm2d(512, eps=0.0)
(conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): FrozenBatchNorm2d(2048, eps=0.0)
(relu): ReLU(inplace=True)
)
)
)
(fpn): FeaturePyramidNetwork(
(inner_blocks): ModuleList(
(0): Conv2dNormActivation(
(0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))
)
(1): Conv2dNormActivation(
(0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
)
(2): Conv2dNormActivation(
(0): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))
)
(3): Conv2dNormActivation(
(0): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))
)
)
(layer_blocks): ModuleList(
(0-3): 4 x Conv2dNormActivation(
(0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
)
(extra_blocks): LastLevelMaxPool()
)
)
(rpn): RegionProposalNetwork(
(anchor_generator): AnchorGenerator()
(head): RPNHead(
(conv): Sequential(
(0): Conv2dNormActivation(
(0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
)
)
(cls_logits): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))
(bbox_pred): Conv2d(256, 12, kernel_size=(1, 1), stride=(1, 1))
)
)
(roi_heads): RoIHeads(
(box_roi_pool): MultiScaleRoIAlign(featmap_names=['0', '1', '2', '3'], output_size=(7, 7), sampling_ratio=2)
(box_head): TwoMLPHead(
(fc6): Linear(in_features=12544, out_features=1024, bias=True)
(fc7): Linear(in_features=1024, out_features=1024, bias=True)
)
(box_predictor): FastRCNNPredictor(
(cls_score): Linear(in_features=1024, out_features=91, bias=True)
(bbox_pred): Linear(in_features=1024, out_features=364, bias=True)
)
)
)
IPython, z którego korzystamy w Jupyter Notebooku, ma wbudowaną funkcję display() do wyświetlania obrazów.
Do pobierania obrazów możemy się posłyżyć wget-em.
# Pobieranie obrazka z sieci
!wget https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Toothbrush_x3_20050716_001.jpg/1280px-Toothbrush_x3_20050716_001.jpg --output-document toothbrushes.jpg
--2024-12-11 21:45:19-- https://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Toothbrush_x3_20050716_001.jpg/1280px-Toothbrush_x3_20050716_001.jpg Resolving upload.wikimedia.org (upload.wikimedia.org)... 198.35.26.112, 2620:0:863:ed1a::2:b Connecting to upload.wikimedia.org (upload.wikimedia.org)|198.35.26.112|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 339825 (332K) [image/jpeg] Saving to: ‘toothbrushes.jpg’ toothbrushes.jpg 100%[===================>] 331.86K --.-KB/s in 0.07s 2024-12-11 21:45:19 (4.81 MB/s) - ‘toothbrushes.jpg’ saved [339825/339825]
# Wyświetlanie obrazka
image = Image.open("toothbrushes.jpg")
# make sure we have 3-channel RGB, e.g. without transparency
image = image.convert("RGB")
display(image)
PyTorch wymaga obrazów w kształcie [channels, height, width] (C, H, W) oraz z wartościami pikseli między 0 a 1. Pillow wczytuje obrazy z kanałami (H, W, C) oraz z wartościami pikseli między 0 a 255. Przed wykorzystaniem sieci neuronowej trzeba zatem:
- zamienić obraz na tensor
- zmienić kolejność kanałów
- podzielić wartości pikseli przez 255
image_tensor = torch.from_numpy(np.array(image))
image_tensor = image_tensor.permute(2, 0, 1)
image_tensor_int = image_tensor # useful for displaying, dtype = uint8
image_tensor = image_tensor / 255
image_tensor.shape, image_tensor.dtype
(torch.Size([3, 960, 1280]), torch.float32)
Zadanie 4 (1 punkt)¶
Użyj modelu do wykrycia obiektów na obrazie. Następnie wybierz tylko te bounding boxy, dla których mamy wynik powyżej 50%. Wypisz te bounding boxy, ich prawdopodobieństwa (w procentach) oraz nazwy klas.
Następnie wykorzystaj wyniki do zaznaczenia bounding box'a dla każdego wykrytego obiektu na obrazie oraz podpisz wykrytą klasę wraz z prawdopodobieństwem. Możesz tutaj użyć:
from torchvision.utils import draw_bounding_boxes
from torchvision.transforms.functional import to_pil_image
y_pred = model([image_tensor.to(device)])
score_threshold = 0.5
toothbrushes = draw_bounding_boxes(
image_tensor_int,
boxes=y_pred[0]["boxes"][y_pred[0]["scores"] > score_threshold],
width=4,
)
display(to_pil_image(toothbrushes))
Fine-tuning i pretrening¶
Trenowanie głębokich sieci neuronowych do przetwarzania obrazów jest zadaniem wymagającym bardzo dużych zbiorów danych i zasobów obliczeniowych. Często jednak, nie musimy trenować takich sieci od nowa, możemy wykorzystać wytrenowane modele i jedynie dostosowywaać je do naszych problemów. Działanie takie nazywa się transfer learning-iem.
Przykładowao: mamy już wytrenowaną sieć na dużym zbiorze danych (pretrening) i chcemy, żeby sieć poradziła sobie z nową klasą obiektów (klasyfikacja), albo lepiej radziła sobie z wybranymi obiektami, które już zna (fine-tuning). Możemy usunąć ostatnią warstwę sieci i na jej miejsce wstawić nową, identyczną, jednak z losowo zainicjalizowanymi wagami, a następnie dotrenować sieć na naszym nowym, bardziej specyficznym zbiorze danych. Przykładowo, jako bazę weźmiemy model wytrenowany na zbiorze ImageNet i będziemy chcieli użyć go do rozpoznawania nowych, nieznanych mu klas, np. ras psów.
Dla przećwiczenia takiego schematu działania wykorzystamy zbiór danych z hotdogami. Będziemy chcieli stwierdzić, czy na obrazku jest hotdog, czy nie. Jako sieci użyjemy modelu ResNet-18, pretrenowanej na zbiorze ImageNet.
# Download the hotdog dataset
!wget http://d2l-data.s3-accelerate.amazonaws.com/hotdog.zip
!unzip -n hotdog.zip
--2024-12-11 21:45:36-- http://d2l-data.s3-accelerate.amazonaws.com/hotdog.zip Resolving d2l-data.s3-accelerate.amazonaws.com (d2l-data.s3-accelerate.amazonaws.com)... 3.168.138.178 Connecting to d2l-data.s3-accelerate.amazonaws.com (d2l-data.s3-accelerate.amazonaws.com)|3.168.138.178|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 261292301 (249M) [application/zip] Saving to: ‘hotdog.zip’ hotdog.zip 100%[===================>] 249.19M 47.9MB/s in 5.1s 2024-12-11 21:45:41 (48.5 MB/s) - ‘hotdog.zip’ saved [261292301/261292301] Archive: hotdog.zip creating: hotdog/ creating: hotdog/train/ creating: hotdog/train/not-hotdog/ extracting: hotdog/train/not-hotdog/50.png extracting: hotdog/train/not-hotdog/554.png extracting: hotdog/train/not-hotdog/299.png inflating: hotdog/train/not-hotdog/428.png inflating: hotdog/train/not-hotdog/475.png inflating: hotdog/train/not-hotdog/933.png extracting: hotdog/train/not-hotdog/677.png inflating: hotdog/train/not-hotdog/284.png extracting: hotdog/train/not-hotdog/728.png inflating: hotdog/train/not-hotdog/667.png inflating: hotdog/train/not-hotdog/912.png extracting: hotdog/train/not-hotdog/406.png extracting: hotdog/train/not-hotdog/333.png extracting: hotdog/train/not-hotdog/837.png inflating: hotdog/train/not-hotdog/295.png inflating: hotdog/train/not-hotdog/274.png inflating: hotdog/train/not-hotdog/307.png extracting: hotdog/train/not-hotdog/343.png inflating: hotdog/train/not-hotdog/399.png inflating: hotdog/train/not-hotdog/618.png extracting: hotdog/train/not-hotdog/358.png extracting: hotdog/train/not-hotdog/122.png inflating: hotdog/train/not-hotdog/119.png inflating: hotdog/train/not-hotdog/645.png inflating: hotdog/train/not-hotdog/231.png inflating: hotdog/train/not-hotdog/488.png inflating: hotdog/train/not-hotdog/603.png inflating: hotdog/train/not-hotdog/911.png extracting: hotdog/train/not-hotdog/328.png inflating: hotdog/train/not-hotdog/277.png extracting: hotdog/train/not-hotdog/820.png inflating: hotdog/train/not-hotdog/463.png inflating: hotdog/train/not-hotdog/361.png inflating: hotdog/train/not-hotdog/832.png inflating: hotdog/train/not-hotdog/693.png extracting: hotdog/train/not-hotdog/239.png inflating: hotdog/train/not-hotdog/606.png inflating: hotdog/train/not-hotdog/871.png inflating: hotdog/train/not-hotdog/560.png inflating: hotdog/train/not-hotdog/334.png inflating: hotdog/train/not-hotdog/405.png inflating: hotdog/train/not-hotdog/251.png extracting: hotdog/train/not-hotdog/14.png inflating: hotdog/train/not-hotdog/829.png inflating: hotdog/train/not-hotdog/12.png inflating: hotdog/train/not-hotdog/400.png inflating: hotdog/train/not-hotdog/312.png extracting: hotdog/train/not-hotdog/762.png extracting: hotdog/train/not-hotdog/789.png extracting: hotdog/train/not-hotdog/137.png inflating: hotdog/train/not-hotdog/472.png inflating: hotdog/train/not-hotdog/995.png extracting: hotdog/train/not-hotdog/359.png inflating: hotdog/train/not-hotdog/389.png inflating: hotdog/train/not-hotdog/971.png inflating: hotdog/train/not-hotdog/607.png extracting: hotdog/train/not-hotdog/282.png inflating: hotdog/train/not-hotdog/526.png inflating: hotdog/train/not-hotdog/936.png inflating: hotdog/train/not-hotdog/197.png inflating: hotdog/train/not-hotdog/362.png inflating: hotdog/train/not-hotdog/713.png inflating: hotdog/train/not-hotdog/220.png inflating: hotdog/train/not-hotdog/747.png extracting: hotdog/train/not-hotdog/97.png extracting: hotdog/train/not-hotdog/126.png inflating: hotdog/train/not-hotdog/996.png inflating: hotdog/train/not-hotdog/327.png inflating: hotdog/train/not-hotdog/438.png extracting: hotdog/train/not-hotdog/540.png extracting: hotdog/train/not-hotdog/109.png inflating: hotdog/train/not-hotdog/611.png inflating: hotdog/train/not-hotdog/292.png inflating: hotdog/train/not-hotdog/926.png inflating: hotdog/train/not-hotdog/814.png inflating: hotdog/train/not-hotdog/967.png extracting: hotdog/train/not-hotdog/683.png inflating: hotdog/train/not-hotdog/952.png inflating: hotdog/train/not-hotdog/776.png extracting: hotdog/train/not-hotdog/592.png inflating: hotdog/train/not-hotdog/68.png inflating: hotdog/train/not-hotdog/910.png inflating: hotdog/train/not-hotdog/754.png inflating: hotdog/train/not-hotdog/236.png inflating: hotdog/train/not-hotdog/847.png inflating: hotdog/train/not-hotdog/206.png inflating: hotdog/train/not-hotdog/180.png inflating: hotdog/train/not-hotdog/413.png inflating: hotdog/train/not-hotdog/681.png inflating: hotdog/train/not-hotdog/287.png inflating: hotdog/train/not-hotdog/242.png extracting: hotdog/train/not-hotdog/836.png inflating: hotdog/train/not-hotdog/145.png inflating: hotdog/train/not-hotdog/490.png extracting: hotdog/train/not-hotdog/130.png extracting: hotdog/train/not-hotdog/269.png inflating: hotdog/train/not-hotdog/189.png inflating: hotdog/train/not-hotdog/207.png inflating: hotdog/train/not-hotdog/94.png extracting: hotdog/train/not-hotdog/378.png inflating: hotdog/train/not-hotdog/341.png inflating: hotdog/train/not-hotdog/73.png inflating: hotdog/train/not-hotdog/709.png inflating: hotdog/train/not-hotdog/375.png inflating: hotdog/train/not-hotdog/993.png inflating: hotdog/train/not-hotdog/4.png inflating: hotdog/train/not-hotdog/796.png inflating: hotdog/train/not-hotdog/342.png inflating: hotdog/train/not-hotdog/881.png extracting: hotdog/train/not-hotdog/165.png inflating: hotdog/train/not-hotdog/509.png inflating: hotdog/train/not-hotdog/150.png inflating: hotdog/train/not-hotdog/196.png extracting: hotdog/train/not-hotdog/534.png inflating: hotdog/train/not-hotdog/642.png inflating: hotdog/train/not-hotdog/152.png extracting: hotdog/train/not-hotdog/434.png inflating: hotdog/train/not-hotdog/953.png inflating: hotdog/train/not-hotdog/308.png inflating: hotdog/train/not-hotdog/682.png inflating: hotdog/train/not-hotdog/595.png extracting: hotdog/train/not-hotdog/662.png extracting: hotdog/train/not-hotdog/619.png extracting: hotdog/train/not-hotdog/719.png extracting: hotdog/train/not-hotdog/437.png inflating: hotdog/train/not-hotdog/752.png inflating: hotdog/train/not-hotdog/671.png inflating: hotdog/train/not-hotdog/469.png extracting: hotdog/train/not-hotdog/83.png inflating: hotdog/train/not-hotdog/462.png extracting: hotdog/train/not-hotdog/452.png inflating: hotdog/train/not-hotdog/455.png inflating: hotdog/train/not-hotdog/115.png extracting: hotdog/train/not-hotdog/163.png inflating: hotdog/train/not-hotdog/395.png inflating: hotdog/train/not-hotdog/266.png inflating: hotdog/train/not-hotdog/605.png inflating: hotdog/train/not-hotdog/772.png inflating: hotdog/train/not-hotdog/346.png inflating: hotdog/train/not-hotdog/423.png inflating: hotdog/train/not-hotdog/88.png extracting: hotdog/train/not-hotdog/703.png inflating: hotdog/train/not-hotdog/587.png inflating: hotdog/train/not-hotdog/448.png inflating: hotdog/train/not-hotdog/44.png inflating: hotdog/train/not-hotdog/741.png inflating: hotdog/train/not-hotdog/698.png extracting: hotdog/train/not-hotdog/262.png inflating: hotdog/train/not-hotdog/181.png inflating: hotdog/train/not-hotdog/61.png extracting: hotdog/train/not-hotdog/893.png inflating: hotdog/train/not-hotdog/561.png inflating: hotdog/train/not-hotdog/245.png inflating: hotdog/train/not-hotdog/412.png extracting: hotdog/train/not-hotdog/157.png extracting: hotdog/train/not-hotdog/102.png inflating: hotdog/train/not-hotdog/612.png inflating: hotdog/train/not-hotdog/640.png inflating: hotdog/train/not-hotdog/76.png inflating: hotdog/train/not-hotdog/914.png extracting: hotdog/train/not-hotdog/799.png inflating: hotdog/train/not-hotdog/161.png extracting: hotdog/train/not-hotdog/748.png inflating: hotdog/train/not-hotdog/940.png inflating: hotdog/train/not-hotdog/117.png inflating: hotdog/train/not-hotdog/446.png inflating: hotdog/train/not-hotdog/857.png extracting: hotdog/train/not-hotdog/77.png inflating: hotdog/train/not-hotdog/229.png inflating: hotdog/train/not-hotdog/965.png inflating: hotdog/train/not-hotdog/511.png inflating: hotdog/train/not-hotdog/786.png inflating: hotdog/train/not-hotdog/248.png extracting: hotdog/train/not-hotdog/192.png inflating: hotdog/train/not-hotdog/521.png inflating: hotdog/train/not-hotdog/541.png inflating: hotdog/train/not-hotdog/241.png inflating: hotdog/train/not-hotdog/147.png inflating: hotdog/train/not-hotdog/276.png inflating: hotdog/train/not-hotdog/822.png extracting: hotdog/train/not-hotdog/445.png inflating: hotdog/train/not-hotdog/221.png extracting: hotdog/train/not-hotdog/187.png inflating: hotdog/train/not-hotdog/927.png inflating: hotdog/train/not-hotdog/957.png inflating: hotdog/train/not-hotdog/30.png inflating: hotdog/train/not-hotdog/501.png extracting: hotdog/train/not-hotdog/972.png inflating: hotdog/train/not-hotdog/162.png inflating: hotdog/train/not-hotdog/997.png extracting: hotdog/train/not-hotdog/283.png inflating: hotdog/train/not-hotdog/479.png inflating: hotdog/train/not-hotdog/303.png inflating: hotdog/train/not-hotdog/705.png extracting: hotdog/train/not-hotdog/850.png inflating: hotdog/train/not-hotdog/232.png inflating: hotdog/train/not-hotdog/90.png inflating: hotdog/train/not-hotdog/598.png inflating: hotdog/train/not-hotdog/433.png extracting: hotdog/train/not-hotdog/453.png inflating: hotdog/train/not-hotdog/418.png extracting: hotdog/train/not-hotdog/813.png inflating: hotdog/train/not-hotdog/778.png extracting: hotdog/train/not-hotdog/556.png inflating: hotdog/train/not-hotdog/992.png inflating: hotdog/train/not-hotdog/753.png inflating: hotdog/train/not-hotdog/441.png inflating: hotdog/train/not-hotdog/11.png inflating: hotdog/train/not-hotdog/924.png inflating: hotdog/train/not-hotdog/685.png inflating: hotdog/train/not-hotdog/470.png extracting: hotdog/train/not-hotdog/919.png inflating: hotdog/train/not-hotdog/986.png extracting: hotdog/train/not-hotdog/532.png extracting: hotdog/train/not-hotdog/580.png inflating: hotdog/train/not-hotdog/939.png extracting: hotdog/train/not-hotdog/951.png inflating: hotdog/train/not-hotdog/513.png inflating: hotdog/train/not-hotdog/991.png inflating: hotdog/train/not-hotdog/672.png inflating: hotdog/train/not-hotdog/982.png inflating: hotdog/train/not-hotdog/376.png extracting: hotdog/train/not-hotdog/291.png inflating: hotdog/train/not-hotdog/722.png extracting: hotdog/train/not-hotdog/530.png extracting: hotdog/train/not-hotdog/9.png inflating: hotdog/train/not-hotdog/483.png inflating: hotdog/train/not-hotdog/168.png inflating: hotdog/train/not-hotdog/209.png inflating: hotdog/train/not-hotdog/146.png inflating: hotdog/train/not-hotdog/401.png inflating: hotdog/train/not-hotdog/648.png extracting: hotdog/train/not-hotdog/430.png extracting: hotdog/train/not-hotdog/255.png inflating: hotdog/train/not-hotdog/981.png extracting: hotdog/train/not-hotdog/49.png inflating: hotdog/train/not-hotdog/649.png inflating: hotdog/train/not-hotdog/657.png inflating: hotdog/train/not-hotdog/984.png inflating: hotdog/train/not-hotdog/315.png inflating: hotdog/train/not-hotdog/678.png extracting: hotdog/train/not-hotdog/946.png inflating: hotdog/train/not-hotdog/34.png inflating: hotdog/train/not-hotdog/835.png inflating: hotdog/train/not-hotdog/517.png inflating: hotdog/train/not-hotdog/955.png inflating: hotdog/train/not-hotdog/834.png inflating: hotdog/train/not-hotdog/506.png inflating: hotdog/train/not-hotdog/883.png inflating: hotdog/train/not-hotdog/42.png extracting: hotdog/train/not-hotdog/323.png inflating: hotdog/train/not-hotdog/466.png inflating: hotdog/train/not-hotdog/247.png inflating: hotdog/train/not-hotdog/641.png extracting: hotdog/train/not-hotdog/495.png extracting: hotdog/train/not-hotdog/840.png extracting: hotdog/train/not-hotdog/281.png inflating: hotdog/train/not-hotdog/586.png extracting: hotdog/train/not-hotdog/990.png inflating: hotdog/train/not-hotdog/795.png inflating: hotdog/train/not-hotdog/644.png inflating: hotdog/train/not-hotdog/568.png inflating: hotdog/train/not-hotdog/575.png inflating: hotdog/train/not-hotdog/969.png inflating: hotdog/train/not-hotdog/330.png extracting: hotdog/train/not-hotdog/602.png extracting: hotdog/train/not-hotdog/74.png extracting: hotdog/train/not-hotdog/921.png inflating: hotdog/train/not-hotdog/848.png inflating: hotdog/train/not-hotdog/904.png inflating: hotdog/train/not-hotdog/542.png inflating: hotdog/train/not-hotdog/512.png inflating: hotdog/train/not-hotdog/978.png inflating: hotdog/train/not-hotdog/721.png inflating: hotdog/train/not-hotdog/199.png inflating: hotdog/train/not-hotdog/467.png extracting: hotdog/train/not-hotdog/812.png extracting: hotdog/train/not-hotdog/746.png inflating: hotdog/train/not-hotdog/493.png inflating: hotdog/train/not-hotdog/457.png inflating: hotdog/train/not-hotdog/562.png inflating: hotdog/train/not-hotdog/704.png inflating: hotdog/train/not-hotdog/23.png extracting: hotdog/train/not-hotdog/559.png inflating: hotdog/train/not-hotdog/344.png inflating: hotdog/train/not-hotdog/310.png extracting: hotdog/train/not-hotdog/179.png inflating: hotdog/train/not-hotdog/171.png inflating: hotdog/train/not-hotdog/120.png inflating: hotdog/train/not-hotdog/449.png inflating: hotdog/train/not-hotdog/875.png inflating: hotdog/train/not-hotdog/96.png inflating: hotdog/train/not-hotdog/714.png inflating: hotdog/train/not-hotdog/935.png inflating: hotdog/train/not-hotdog/54.png inflating: hotdog/train/not-hotdog/45.png extracting: hotdog/train/not-hotdog/716.png inflating: hotdog/train/not-hotdog/999.png inflating: hotdog/train/not-hotdog/492.png inflating: hotdog/train/not-hotdog/311.png extracting: hotdog/train/not-hotdog/364.png inflating: hotdog/train/not-hotdog/948.png extracting: hotdog/train/not-hotdog/185.png extracting: hotdog/train/not-hotdog/843.png extracting: hotdog/train/not-hotdog/141.png extracting: hotdog/train/not-hotdog/190.png inflating: hotdog/train/not-hotdog/726.png inflating: hotdog/train/not-hotdog/481.png extracting: hotdog/train/not-hotdog/516.png inflating: hotdog/train/not-hotdog/272.png inflating: hotdog/train/not-hotdog/945.png inflating: hotdog/train/not-hotdog/533.png inflating: hotdog/train/not-hotdog/565.png inflating: hotdog/train/not-hotdog/416.png inflating: hotdog/train/not-hotdog/216.png inflating: hotdog/train/not-hotdog/424.png extracting: hotdog/train/not-hotdog/382.png extracting: hotdog/train/not-hotdog/655.png extracting: hotdog/train/not-hotdog/222.png inflating: hotdog/train/not-hotdog/154.png inflating: hotdog/train/not-hotdog/249.png inflating: hotdog/train/not-hotdog/998.png extracting: hotdog/train/not-hotdog/194.png inflating: hotdog/train/not-hotdog/419.png inflating: hotdog/train/not-hotdog/852.png extracting: hotdog/train/not-hotdog/188.png inflating: hotdog/train/not-hotdog/372.png extracting: hotdog/train/not-hotdog/19.png inflating: hotdog/train/not-hotdog/259.png extracting: hotdog/train/not-hotdog/632.png inflating: hotdog/train/not-hotdog/182.png extracting: hotdog/train/not-hotdog/200.png inflating: hotdog/train/not-hotdog/474.png inflating: hotdog/train/not-hotdog/593.png extracting: hotdog/train/not-hotdog/198.png inflating: hotdog/train/not-hotdog/849.png inflating: hotdog/train/not-hotdog/489.png inflating: hotdog/train/not-hotdog/962.png inflating: hotdog/train/not-hotdog/166.png inflating: hotdog/train/not-hotdog/930.png inflating: hotdog/train/not-hotdog/994.png extracting: hotdog/train/not-hotdog/65.png inflating: hotdog/train/not-hotdog/959.png inflating: hotdog/train/not-hotdog/178.png extracting: hotdog/train/not-hotdog/518.png inflating: hotdog/train/not-hotdog/941.png inflating: hotdog/train/not-hotdog/917.png extracting: hotdog/train/not-hotdog/790.png inflating: hotdog/train/not-hotdog/823.png inflating: hotdog/train/not-hotdog/717.png inflating: hotdog/train/not-hotdog/486.png extracting: hotdog/train/not-hotdog/392.png inflating: hotdog/train/not-hotdog/730.png extracting: hotdog/train/not-hotdog/815.png inflating: hotdog/train/not-hotdog/956.png extracting: hotdog/train/not-hotdog/350.png inflating: hotdog/train/not-hotdog/900.png inflating: hotdog/train/not-hotdog/537.png extracting: hotdog/train/not-hotdog/75.png inflating: hotdog/train/not-hotdog/338.png extracting: hotdog/train/not-hotdog/788.png extracting: hotdog/train/not-hotdog/763.png inflating: hotdog/train/not-hotdog/868.png extracting: hotdog/train/not-hotdog/138.png inflating: hotdog/train/not-hotdog/409.png inflating: hotdog/train/not-hotdog/665.png inflating: hotdog/train/not-hotdog/596.png inflating: hotdog/train/not-hotdog/193.png extracting: hotdog/train/not-hotdog/732.png inflating: hotdog/train/not-hotdog/581.png extracting: hotdog/train/not-hotdog/771.png extracting: hotdog/train/not-hotdog/715.png inflating: hotdog/train/not-hotdog/436.png inflating: hotdog/train/not-hotdog/213.png extracting: hotdog/train/not-hotdog/290.png inflating: hotdog/train/not-hotdog/934.png inflating: hotdog/train/not-hotdog/56.png extracting: hotdog/train/not-hotdog/431.png extracting: hotdog/train/not-hotdog/634.png inflating: hotdog/train/not-hotdog/118.png inflating: hotdog/train/not-hotdog/906.png inflating: hotdog/train/not-hotdog/25.png inflating: hotdog/train/not-hotdog/821.png inflating: hotdog/train/not-hotdog/695.png inflating: hotdog/train/not-hotdog/1.png inflating: hotdog/train/not-hotdog/394.png inflating: hotdog/train/not-hotdog/256.png inflating: hotdog/train/not-hotdog/233.png inflating: hotdog/train/not-hotdog/349.png inflating: hotdog/train/not-hotdog/853.png inflating: hotdog/train/not-hotdog/831.png extracting: hotdog/train/not-hotdog/101.png extracting: hotdog/train/not-hotdog/383.png inflating: hotdog/train/not-hotdog/22.png inflating: hotdog/train/not-hotdog/238.png extracting: hotdog/train/not-hotdog/839.png inflating: hotdog/train/not-hotdog/856.png inflating: hotdog/train/not-hotdog/749.png inflating: hotdog/train/not-hotdog/859.png inflating: hotdog/train/not-hotdog/275.png inflating: hotdog/train/not-hotdog/80.png inflating: hotdog/train/not-hotdog/302.png extracting: hotdog/train/not-hotdog/877.png inflating: hotdog/train/not-hotdog/800.png inflating: hotdog/train/not-hotdog/356.png extracting: hotdog/train/not-hotdog/264.png inflating: hotdog/train/not-hotdog/388.png inflating: hotdog/train/not-hotdog/202.png inflating: hotdog/train/not-hotdog/670.png extracting: hotdog/train/not-hotdog/675.png extracting: hotdog/train/not-hotdog/345.png inflating: hotdog/train/not-hotdog/0.png inflating: hotdog/train/not-hotdog/548.png inflating: hotdog/train/not-hotdog/742.png inflating: hotdog/train/not-hotdog/296.png inflating: hotdog/train/not-hotdog/879.png extracting: hotdog/train/not-hotdog/977.png inflating: hotdog/train/not-hotdog/707.png inflating: hotdog/train/not-hotdog/523.png extracting: hotdog/train/not-hotdog/355.png inflating: hotdog/train/not-hotdog/60.png extracting: hotdog/train/not-hotdog/773.png inflating: hotdog/train/not-hotdog/135.png inflating: hotdog/train/not-hotdog/113.png extracting: hotdog/train/not-hotdog/663.png inflating: hotdog/train/not-hotdog/335.png inflating: hotdog/train/not-hotdog/880.png extracting: hotdog/train/not-hotdog/637.png inflating: hotdog/train/not-hotdog/724.png extracting: hotdog/train/not-hotdog/650.png inflating: hotdog/train/not-hotdog/780.png inflating: hotdog/train/not-hotdog/550.png extracting: hotdog/train/not-hotdog/638.png inflating: hotdog/train/not-hotdog/505.png extracting: hotdog/train/not-hotdog/415.png inflating: hotdog/train/not-hotdog/100.png extracting: hotdog/train/not-hotdog/635.png inflating: hotdog/train/not-hotdog/898.png inflating: hotdog/train/not-hotdog/279.png extracting: hotdog/train/not-hotdog/67.png inflating: hotdog/train/not-hotdog/736.png extracting: hotdog/train/not-hotdog/507.png inflating: hotdog/train/not-hotdog/491.png inflating: hotdog/train/not-hotdog/504.png inflating: hotdog/train/not-hotdog/112.png inflating: hotdog/train/not-hotdog/435.png inflating: hotdog/train/not-hotdog/7.png inflating: hotdog/train/not-hotdog/979.png extracting: hotdog/train/not-hotdog/98.png extracting: hotdog/train/not-hotdog/696.png extracting: hotdog/train/not-hotdog/531.png inflating: hotdog/train/not-hotdog/451.png inflating: hotdog/train/not-hotdog/701.png inflating: hotdog/train/not-hotdog/47.png inflating: hotdog/train/not-hotdog/808.png inflating: hotdog/train/not-hotdog/309.png inflating: hotdog/train/not-hotdog/443.png extracting: hotdog/train/not-hotdog/968.png inflating: hotdog/train/not-hotdog/622.png inflating: hotdog/train/not-hotdog/353.png inflating: hotdog/train/not-hotdog/317.png inflating: hotdog/train/not-hotdog/878.png inflating: hotdog/train/not-hotdog/515.png extracting: hotdog/train/not-hotdog/104.png inflating: hotdog/train/not-hotdog/391.png inflating: hotdog/train/not-hotdog/444.png inflating: hotdog/train/not-hotdog/666.png extracting: hotdog/train/not-hotdog/253.png extracting: hotdog/train/not-hotdog/41.png extracting: hotdog/train/not-hotdog/306.png extracting: hotdog/train/not-hotdog/58.png inflating: hotdog/train/not-hotdog/93.png inflating: hotdog/train/not-hotdog/551.png inflating: hotdog/train/not-hotdog/643.png inflating: hotdog/train/not-hotdog/240.png extracting: hotdog/train/not-hotdog/874.png inflating: hotdog/train/not-hotdog/947.png extracting: hotdog/train/not-hotdog/739.png extracting: hotdog/train/not-hotdog/404.png inflating: hotdog/train/not-hotdog/627.png inflating: hotdog/train/not-hotdog/687.png extracting: hotdog/train/not-hotdog/889.png inflating: hotdog/train/not-hotdog/28.png inflating: hotdog/train/not-hotdog/177.png extracting: hotdog/train/not-hotdog/908.png inflating: hotdog/train/not-hotdog/758.png extracting: hotdog/train/not-hotdog/429.png inflating: hotdog/train/not-hotdog/71.png extracting: hotdog/train/not-hotdog/818.png inflating: hotdog/train/not-hotdog/183.png extracting: hotdog/train/not-hotdog/867.png inflating: hotdog/train/not-hotdog/212.png extracting: hotdog/train/not-hotdog/468.png inflating: hotdog/train/not-hotdog/570.png inflating: hotdog/train/not-hotdog/128.png inflating: hotdog/train/not-hotdog/964.png extracting: hotdog/train/not-hotdog/288.png inflating: hotdog/train/not-hotdog/139.png inflating: hotdog/train/not-hotdog/608.png extracting: hotdog/train/not-hotdog/760.png inflating: hotdog/train/not-hotdog/751.png inflating: hotdog/train/not-hotdog/29.png inflating: hotdog/train/not-hotdog/273.png inflating: hotdog/train/not-hotdog/186.png inflating: hotdog/train/not-hotdog/585.png inflating: hotdog/train/not-hotdog/801.png inflating: hotdog/train/not-hotdog/496.png extracting: hotdog/train/not-hotdog/527.png extracting: hotdog/train/not-hotdog/57.png extracting: hotdog/train/not-hotdog/567.png extracting: hotdog/train/not-hotdog/804.png extracting: hotdog/train/not-hotdog/943.png inflating: hotdog/train/not-hotdog/473.png inflating: hotdog/train/not-hotdog/897.png inflating: hotdog/train/not-hotdog/966.png extracting: hotdog/train/not-hotdog/15.png extracting: hotdog/train/not-hotdog/129.png extracting: hotdog/train/not-hotdog/371.png extracting: hotdog/train/not-hotdog/702.png extracting: hotdog/train/not-hotdog/557.png inflating: hotdog/train/not-hotdog/320.png inflating: hotdog/train/not-hotdog/454.png inflating: hotdog/train/not-hotdog/613.png inflating: hotdog/train/not-hotdog/319.png extracting: hotdog/train/not-hotdog/471.png inflating: hotdog/train/not-hotdog/579.png inflating: hotdog/train/not-hotdog/484.png inflating: hotdog/train/not-hotdog/480.png inflating: hotdog/train/not-hotdog/410.png inflating: hotdog/train/not-hotdog/528.png extracting: hotdog/train/not-hotdog/227.png extracting: hotdog/train/not-hotdog/123.png inflating: hotdog/train/not-hotdog/121.png inflating: hotdog/train/not-hotdog/170.png extracting: hotdog/train/not-hotdog/937.png extracting: hotdog/train/not-hotdog/764.png inflating: hotdog/train/not-hotdog/363.png inflating: hotdog/train/not-hotdog/668.png inflating: hotdog/train/not-hotdog/107.png inflating: hotdog/train/not-hotdog/599.png inflating: hotdog/train/not-hotdog/866.png inflating: hotdog/train/not-hotdog/767.png inflating: hotdog/train/not-hotdog/329.png inflating: hotdog/train/not-hotdog/417.png extracting: hotdog/train/not-hotdog/636.png extracting: hotdog/train/not-hotdog/228.png inflating: hotdog/train/not-hotdog/169.png inflating: hotdog/train/not-hotdog/458.png inflating: hotdog/train/not-hotdog/549.png inflating: hotdog/train/not-hotdog/92.png inflating: hotdog/train/not-hotdog/27.png inflating: hotdog/train/not-hotdog/79.png inflating: hotdog/train/not-hotdog/257.png inflating: hotdog/train/not-hotdog/246.png inflating: hotdog/train/not-hotdog/114.png extracting: hotdog/train/not-hotdog/514.png inflating: hotdog/train/not-hotdog/617.png inflating: hotdog/train/not-hotdog/234.png inflating: hotdog/train/not-hotdog/864.png inflating: hotdog/train/not-hotdog/817.png extracting: hotdog/train/not-hotdog/669.png inflating: hotdog/train/not-hotdog/482.png inflating: hotdog/train/not-hotdog/811.png inflating: hotdog/train/not-hotdog/85.png extracting: hotdog/train/not-hotdog/699.png extracting: hotdog/train/not-hotdog/558.png inflating: hotdog/train/not-hotdog/851.png extracting: hotdog/train/not-hotdog/39.png inflating: hotdog/train/not-hotdog/285.png inflating: hotdog/train/not-hotdog/237.png extracting: hotdog/train/not-hotdog/81.png inflating: hotdog/train/not-hotdog/784.png inflating: hotdog/train/not-hotdog/26.png inflating: hotdog/train/not-hotdog/692.png extracting: hotdog/train/not-hotdog/267.png extracting: hotdog/train/not-hotdog/828.png inflating: hotdog/train/not-hotdog/414.png extracting: hotdog/train/not-hotdog/158.png inflating: hotdog/train/not-hotdog/582.png inflating: hotdog/train/not-hotdog/674.png inflating: hotdog/train/not-hotdog/62.png inflating: hotdog/train/not-hotdog/882.png inflating: hotdog/train/not-hotdog/720.png extracting: hotdog/train/not-hotdog/331.png inflating: hotdog/train/not-hotdog/132.png inflating: hotdog/train/not-hotdog/442.png inflating: hotdog/train/not-hotdog/204.png inflating: hotdog/train/not-hotdog/425.png inflating: hotdog/train/not-hotdog/870.png inflating: hotdog/train/not-hotdog/365.png extracting: hotdog/train/not-hotdog/465.png inflating: hotdog/train/not-hotdog/215.png extracting: hotdog/train/not-hotdog/326.png inflating: hotdog/train/not-hotdog/421.png inflating: hotdog/train/not-hotdog/628.png extracting: hotdog/train/not-hotdog/263.png inflating: hotdog/train/not-hotdog/6.png inflating: hotdog/train/not-hotdog/830.png inflating: hotdog/train/not-hotdog/958.png extracting: hotdog/train/not-hotdog/920.png inflating: hotdog/train/not-hotdog/131.png extracting: hotdog/train/not-hotdog/519.png extracting: hotdog/train/not-hotdog/460.png inflating: hotdog/train/not-hotdog/546.png extracting: hotdog/train/not-hotdog/782.png inflating: hotdog/train/not-hotdog/380.png inflating: hotdog/train/not-hotdog/597.png inflating: hotdog/train/not-hotdog/500.png inflating: hotdog/train/not-hotdog/367.png extracting: hotdog/train/not-hotdog/125.png inflating: hotdog/train/not-hotdog/578.png inflating: hotdog/train/not-hotdog/539.png inflating: hotdog/train/not-hotdog/684.png extracting: hotdog/train/not-hotdog/706.png extracting: hotdog/train/not-hotdog/459.png inflating: hotdog/train/not-hotdog/931.png extracting: hotdog/train/not-hotdog/825.png extracting: hotdog/train/not-hotdog/858.png inflating: hotdog/train/not-hotdog/863.png inflating: hotdog/train/not-hotdog/72.png inflating: hotdog/train/not-hotdog/503.png inflating: hotdog/train/not-hotdog/420.png inflating: hotdog/train/not-hotdog/390.png inflating: hotdog/train/not-hotdog/909.png inflating: hotdog/train/not-hotdog/735.png extracting: hotdog/train/not-hotdog/84.png inflating: hotdog/train/not-hotdog/827.png inflating: hotdog/train/not-hotdog/396.png inflating: hotdog/train/not-hotdog/806.png inflating: hotdog/train/not-hotdog/16.png inflating: hotdog/train/not-hotdog/712.png inflating: hotdog/train/not-hotdog/422.png inflating: hotdog/train/not-hotdog/300.png inflating: hotdog/train/not-hotdog/32.png inflating: hotdog/train/not-hotdog/2.png extracting: hotdog/train/not-hotdog/195.png extracting: hotdog/train/not-hotdog/402.png inflating: hotdog/train/not-hotdog/574.png inflating: hotdog/train/not-hotdog/301.png inflating: hotdog/train/not-hotdog/224.png inflating: hotdog/train/not-hotdog/53.png inflating: hotdog/train/not-hotdog/8.png inflating: hotdog/train/not-hotdog/18.png inflating: hotdog/train/not-hotdog/923.png extracting: hotdog/train/not-hotdog/316.png inflating: hotdog/train/not-hotdog/485.png extracting: hotdog/train/not-hotdog/40.png extracting: hotdog/train/not-hotdog/314.png inflating: hotdog/train/not-hotdog/243.png inflating: hotdog/train/not-hotdog/777.png extracting: hotdog/train/not-hotdog/865.png extracting: hotdog/train/not-hotdog/555.png extracting: hotdog/train/not-hotdog/869.png inflating: hotdog/train/not-hotdog/20.png extracting: hotdog/train/not-hotdog/271.png inflating: hotdog/train/not-hotdog/826.png extracting: hotdog/train/not-hotdog/427.png inflating: hotdog/train/not-hotdog/10.png inflating: hotdog/train/not-hotdog/624.png extracting: hotdog/train/not-hotdog/781.png extracting: hotdog/train/not-hotdog/381.png inflating: hotdog/train/not-hotdog/134.png inflating: hotdog/train/not-hotdog/929.png extracting: hotdog/train/not-hotdog/651.png inflating: hotdog/train/not-hotdog/774.png extracting: hotdog/train/not-hotdog/456.png inflating: hotdog/train/not-hotdog/305.png inflating: hotdog/train/not-hotdog/235.png extracting: hotdog/train/not-hotdog/918.png inflating: hotdog/train/not-hotdog/583.png inflating: hotdog/train/not-hotdog/591.png inflating: hotdog/train/not-hotdog/718.png inflating: hotdog/train/not-hotdog/876.png inflating: hotdog/train/not-hotdog/398.png extracting: hotdog/train/not-hotdog/520.png extracting: hotdog/train/not-hotdog/768.png inflating: hotdog/train/not-hotdog/293.png inflating: hotdog/train/not-hotdog/802.png inflating: hotdog/train/not-hotdog/89.png inflating: hotdog/train/not-hotdog/366.png extracting: hotdog/train/not-hotdog/727.png extracting: hotdog/train/not-hotdog/91.png extracting: hotdog/train/not-hotdog/791.png extracting: hotdog/train/not-hotdog/960.png inflating: hotdog/train/not-hotdog/809.png inflating: hotdog/train/not-hotdog/646.png inflating: hotdog/train/not-hotdog/988.png inflating: hotdog/train/not-hotdog/36.png inflating: hotdog/train/not-hotdog/620.png inflating: hotdog/train/not-hotdog/347.png inflating: hotdog/train/not-hotdog/755.png inflating: hotdog/train/not-hotdog/377.png inflating: hotdog/train/not-hotdog/43.png extracting: hotdog/train/not-hotdog/529.png extracting: hotdog/train/not-hotdog/261.png inflating: hotdog/train/not-hotdog/819.png inflating: hotdog/train/not-hotdog/887.png inflating: hotdog/train/not-hotdog/258.png inflating: hotdog/train/not-hotdog/174.png extracting: hotdog/train/not-hotdog/324.png extracting: hotdog/train/not-hotdog/854.png inflating: hotdog/train/not-hotdog/629.png inflating: hotdog/train/not-hotdog/149.png extracting: hotdog/train/not-hotdog/432.png inflating: hotdog/train/not-hotdog/499.png extracting: hotdog/train/not-hotdog/254.png inflating: hotdog/train/not-hotdog/370.png extracting: hotdog/train/not-hotdog/387.png inflating: hotdog/train/not-hotdog/664.png inflating: hotdog/train/not-hotdog/723.png inflating: hotdog/train/not-hotdog/447.png extracting: hotdog/train/not-hotdog/950.png extracting: hotdog/train/not-hotdog/872.png inflating: hotdog/train/not-hotdog/384.png inflating: hotdog/train/not-hotdog/210.png extracting: hotdog/train/not-hotdog/621.png inflating: hotdog/train/not-hotdog/980.png inflating: hotdog/train/not-hotdog/464.png inflating: hotdog/train/not-hotdog/31.png inflating: hotdog/train/not-hotdog/148.png inflating: hotdog/train/not-hotdog/289.png extracting: hotdog/train/not-hotdog/652.png inflating: hotdog/train/not-hotdog/64.png inflating: hotdog/train/not-hotdog/846.png extracting: hotdog/train/not-hotdog/785.png extracting: hotdog/train/not-hotdog/280.png inflating: hotdog/train/not-hotdog/357.png inflating: hotdog/train/not-hotdog/270.png inflating: hotdog/train/not-hotdog/24.png inflating: hotdog/train/not-hotdog/572.png inflating: hotdog/train/not-hotdog/569.png inflating: hotdog/train/not-hotdog/886.png inflating: hotdog/train/not-hotdog/679.png inflating: hotdog/train/not-hotdog/545.png inflating: hotdog/train/not-hotdog/738.png inflating: hotdog/train/not-hotdog/136.png inflating: hotdog/train/not-hotdog/524.png inflating: hotdog/train/not-hotdog/905.png extracting: hotdog/train/not-hotdog/783.png inflating: hotdog/train/not-hotdog/348.png extracting: hotdog/train/not-hotdog/798.png inflating: hotdog/train/not-hotdog/547.png inflating: hotdog/train/not-hotdog/21.png extracting: hotdog/train/not-hotdog/156.png extracting: hotdog/train/not-hotdog/873.png inflating: hotdog/train/not-hotdog/184.png inflating: hotdog/train/not-hotdog/205.png inflating: hotdog/train/not-hotdog/69.png inflating: hotdog/train/not-hotdog/55.png extracting: hotdog/train/not-hotdog/325.png inflating: hotdog/train/not-hotdog/155.png inflating: hotdog/train/not-hotdog/278.png inflating: hotdog/train/not-hotdog/740.png inflating: hotdog/train/not-hotdog/961.png inflating: hotdog/train/not-hotdog/294.png inflating: hotdog/train/not-hotdog/896.png inflating: hotdog/train/not-hotdog/38.png inflating: hotdog/train/not-hotdog/127.png extracting: hotdog/train/not-hotdog/140.png extracting: hotdog/train/not-hotdog/201.png inflating: hotdog/train/not-hotdog/440.png inflating: hotdog/train/not-hotdog/589.png inflating: hotdog/train/not-hotdog/942.png inflating: hotdog/train/not-hotdog/106.png inflating: hotdog/train/not-hotdog/321.png inflating: hotdog/train/not-hotdog/954.png extracting: hotdog/train/not-hotdog/111.png extracting: hotdog/train/not-hotdog/124.png inflating: hotdog/train/not-hotdog/576.png inflating: hotdog/train/not-hotdog/217.png extracting: hotdog/train/not-hotdog/35.png extracting: hotdog/train/not-hotdog/379.png inflating: hotdog/train/not-hotdog/974.png inflating: hotdog/train/not-hotdog/803.png inflating: hotdog/train/not-hotdog/477.png inflating: hotdog/train/not-hotdog/985.png extracting: hotdog/train/not-hotdog/172.png inflating: hotdog/train/not-hotdog/339.png inflating: hotdog/train/not-hotdog/769.png extracting: hotdog/train/not-hotdog/838.png extracting: hotdog/train/not-hotdog/734.png inflating: hotdog/train/not-hotdog/686.png extracting: hotdog/train/not-hotdog/807.png extracting: hotdog/train/not-hotdog/949.png inflating: hotdog/train/not-hotdog/498.png inflating: hotdog/train/not-hotdog/833.png extracting: hotdog/train/not-hotdog/461.png inflating: hotdog/train/not-hotdog/891.png inflating: hotdog/train/not-hotdog/983.png inflating: hotdog/train/not-hotdog/244.png inflating: hotdog/train/not-hotdog/797.png inflating: hotdog/train/not-hotdog/775.png inflating: hotdog/train/not-hotdog/604.png extracting: hotdog/train/not-hotdog/892.png extracting: hotdog/train/not-hotdog/989.png inflating: hotdog/train/not-hotdog/973.png inflating: hotdog/train/not-hotdog/673.png inflating: hotdog/train/not-hotdog/770.png inflating: hotdog/train/not-hotdog/816.png inflating: hotdog/train/not-hotdog/191.png extracting: hotdog/train/not-hotdog/890.png extracting: hotdog/train/not-hotdog/944.png inflating: hotdog/train/not-hotdog/374.png inflating: hotdog/train/not-hotdog/525.png extracting: hotdog/train/not-hotdog/885.png inflating: hotdog/train/not-hotdog/133.png inflating: hotdog/train/not-hotdog/725.png extracting: hotdog/train/not-hotdog/337.png inflating: hotdog/train/not-hotdog/385.png extracting: hotdog/train/not-hotdog/884.png inflating: hotdog/train/not-hotdog/594.png inflating: hotdog/train/not-hotdog/654.png inflating: hotdog/train/not-hotdog/226.png inflating: hotdog/train/not-hotdog/661.png inflating: hotdog/train/not-hotdog/737.png inflating: hotdog/train/not-hotdog/48.png inflating: hotdog/train/not-hotdog/322.png extracting: hotdog/train/not-hotdog/408.png inflating: hotdog/train/not-hotdog/478.png inflating: hotdog/train/not-hotdog/925.png extracting: hotdog/train/not-hotdog/614.png inflating: hotdog/train/not-hotdog/577.png inflating: hotdog/train/not-hotdog/690.png inflating: hotdog/train/not-hotdog/543.png inflating: hotdog/train/not-hotdog/694.png extracting: hotdog/train/not-hotdog/3.png inflating: hotdog/train/not-hotdog/862.png extracting: hotdog/train/not-hotdog/658.png inflating: hotdog/train/not-hotdog/708.png inflating: hotdog/train/not-hotdog/563.png inflating: hotdog/train/not-hotdog/167.png inflating: hotdog/train/not-hotdog/759.png extracting: hotdog/train/not-hotdog/252.png inflating: hotdog/train/not-hotdog/615.png extracting: hotdog/train/not-hotdog/336.png extracting: hotdog/train/not-hotdog/688.png inflating: hotdog/train/not-hotdog/360.png inflating: hotdog/train/not-hotdog/913.png extracting: hotdog/train/not-hotdog/888.png extracting: hotdog/train/not-hotdog/368.png inflating: hotdog/train/not-hotdog/268.png inflating: hotdog/train/not-hotdog/963.png extracting: hotdog/train/not-hotdog/616.png extracting: hotdog/train/not-hotdog/13.png inflating: hotdog/train/not-hotdog/600.png inflating: hotdog/train/not-hotdog/639.png extracting: hotdog/train/not-hotdog/59.png inflating: hotdog/train/not-hotdog/691.png extracting: hotdog/train/not-hotdog/824.png inflating: hotdog/train/not-hotdog/566.png extracting: hotdog/train/not-hotdog/373.png inflating: hotdog/train/not-hotdog/297.png inflating: hotdog/train/not-hotdog/33.png inflating: hotdog/train/not-hotdog/313.png inflating: hotdog/train/not-hotdog/656.png inflating: hotdog/train/not-hotdog/411.png inflating: hotdog/train/not-hotdog/733.png extracting: hotdog/train/not-hotdog/86.png inflating: hotdog/train/not-hotdog/757.png inflating: hotdog/train/not-hotdog/928.png extracting: hotdog/train/not-hotdog/787.png inflating: hotdog/train/not-hotdog/987.png inflating: hotdog/train/not-hotdog/573.png inflating: hotdog/train/not-hotdog/901.png inflating: hotdog/train/not-hotdog/609.png inflating: hotdog/train/not-hotdog/711.png inflating: hotdog/train/not-hotdog/214.png extracting: hotdog/train/not-hotdog/700.png inflating: hotdog/train/not-hotdog/497.png inflating: hotdog/train/not-hotdog/793.png inflating: hotdog/train/not-hotdog/298.png inflating: hotdog/train/not-hotdog/340.png inflating: hotdog/train/not-hotdog/173.png inflating: hotdog/train/not-hotdog/588.png inflating: hotdog/train/not-hotdog/601.png inflating: hotdog/train/not-hotdog/175.png inflating: hotdog/train/not-hotdog/680.png inflating: hotdog/train/not-hotdog/805.png inflating: hotdog/train/not-hotdog/750.png inflating: hotdog/train/not-hotdog/508.png inflating: hotdog/train/not-hotdog/810.png extracting: hotdog/train/not-hotdog/861.png inflating: hotdog/train/not-hotdog/225.png inflating: hotdog/train/not-hotdog/538.png inflating: hotdog/train/not-hotdog/386.png inflating: hotdog/train/not-hotdog/895.png inflating: hotdog/train/not-hotdog/902.png inflating: hotdog/train/not-hotdog/899.png inflating: hotdog/train/not-hotdog/403.png extracting: hotdog/train/not-hotdog/633.png extracting: hotdog/train/not-hotdog/630.png inflating: hotdog/train/not-hotdog/352.png inflating: hotdog/train/not-hotdog/756.png inflating: hotdog/train/not-hotdog/66.png inflating: hotdog/train/not-hotdog/845.png inflating: hotdog/train/not-hotdog/689.png extracting: hotdog/train/not-hotdog/164.png inflating: hotdog/train/not-hotdog/623.png inflating: hotdog/train/not-hotdog/46.png extracting: hotdog/train/not-hotdog/765.png inflating: hotdog/train/not-hotdog/653.png inflating: hotdog/train/not-hotdog/571.png extracting: hotdog/train/not-hotdog/631.png inflating: hotdog/train/not-hotdog/211.png inflating: hotdog/train/not-hotdog/766.png inflating: hotdog/train/not-hotdog/63.png inflating: hotdog/train/not-hotdog/660.png inflating: hotdog/train/not-hotdog/907.png inflating: hotdog/train/not-hotdog/975.png extracting: hotdog/train/not-hotdog/535.png extracting: hotdog/train/not-hotdog/176.png inflating: hotdog/train/not-hotdog/743.png inflating: hotdog/train/not-hotdog/351.png extracting: hotdog/train/not-hotdog/52.png extracting: hotdog/train/not-hotdog/265.png inflating: hotdog/train/not-hotdog/792.png inflating: hotdog/train/not-hotdog/250.png inflating: hotdog/train/not-hotdog/203.png extracting: hotdog/train/not-hotdog/970.png extracting: hotdog/train/not-hotdog/625.png inflating: hotdog/train/not-hotdog/729.png extracting: hotdog/train/not-hotdog/841.png inflating: hotdog/train/not-hotdog/153.png extracting: hotdog/train/not-hotdog/105.png inflating: hotdog/train/not-hotdog/393.png inflating: hotdog/train/not-hotdog/160.png inflating: hotdog/train/not-hotdog/286.png inflating: hotdog/train/not-hotdog/584.png extracting: hotdog/train/not-hotdog/731.png inflating: hotdog/train/not-hotdog/37.png inflating: hotdog/train/not-hotdog/51.png inflating: hotdog/train/not-hotdog/536.png inflating: hotdog/train/not-hotdog/710.png inflating: hotdog/train/not-hotdog/218.png extracting: hotdog/train/not-hotdog/108.png extracting: hotdog/train/not-hotdog/938.png inflating: hotdog/train/not-hotdog/151.png inflating: hotdog/train/not-hotdog/426.png extracting: hotdog/train/not-hotdog/976.png extracting: hotdog/train/not-hotdog/844.png extracting: hotdog/train/not-hotdog/476.png inflating: hotdog/train/not-hotdog/99.png inflating: hotdog/train/not-hotdog/855.png inflating: hotdog/train/not-hotdog/369.png inflating: hotdog/train/not-hotdog/647.png inflating: hotdog/train/not-hotdog/354.png inflating: hotdog/train/not-hotdog/916.png inflating: hotdog/train/not-hotdog/564.png inflating: hotdog/train/not-hotdog/761.png inflating: hotdog/train/not-hotdog/610.png inflating: hotdog/train/not-hotdog/903.png inflating: hotdog/train/not-hotdog/318.png inflating: hotdog/train/not-hotdog/676.png extracting: hotdog/train/not-hotdog/78.png inflating: hotdog/train/not-hotdog/260.png inflating: hotdog/train/not-hotdog/744.png extracting: hotdog/train/not-hotdog/439.png inflating: hotdog/train/not-hotdog/659.png inflating: hotdog/train/not-hotdog/87.png inflating: hotdog/train/not-hotdog/590.png inflating: hotdog/train/not-hotdog/932.png inflating: hotdog/train/not-hotdog/487.png inflating: hotdog/train/not-hotdog/230.png extracting: hotdog/train/not-hotdog/159.png inflating: hotdog/train/not-hotdog/552.png extracting: hotdog/train/not-hotdog/103.png extracting: hotdog/train/not-hotdog/208.png inflating: hotdog/train/not-hotdog/5.png inflating: hotdog/train/not-hotdog/143.png inflating: hotdog/train/not-hotdog/95.png inflating: hotdog/train/not-hotdog/144.png inflating: hotdog/train/not-hotdog/779.png inflating: hotdog/train/not-hotdog/332.png extracting: hotdog/train/not-hotdog/915.png inflating: hotdog/train/not-hotdog/142.png extracting: hotdog/train/not-hotdog/745.png inflating: hotdog/train/not-hotdog/110.png inflating: hotdog/train/not-hotdog/70.png extracting: hotdog/train/not-hotdog/82.png inflating: hotdog/train/not-hotdog/494.png extracting: hotdog/train/not-hotdog/860.png inflating: hotdog/train/not-hotdog/894.png inflating: hotdog/train/not-hotdog/116.png inflating: hotdog/train/not-hotdog/626.png inflating: hotdog/train/not-hotdog/794.png extracting: hotdog/train/not-hotdog/697.png extracting: hotdog/train/not-hotdog/407.png extracting: hotdog/train/not-hotdog/842.png inflating: hotdog/train/not-hotdog/922.png inflating: hotdog/train/not-hotdog/450.png inflating: hotdog/train/not-hotdog/553.png inflating: hotdog/train/not-hotdog/502.png inflating: hotdog/train/not-hotdog/304.png inflating: hotdog/train/not-hotdog/219.png inflating: hotdog/train/not-hotdog/544.png inflating: hotdog/train/not-hotdog/397.png inflating: hotdog/train/not-hotdog/17.png inflating: hotdog/train/not-hotdog/510.png inflating: hotdog/train/not-hotdog/223.png inflating: hotdog/train/not-hotdog/522.png creating: hotdog/train/hotdog/ inflating: hotdog/train/hotdog/50.png inflating: hotdog/train/hotdog/554.png inflating: hotdog/train/hotdog/299.png inflating: hotdog/train/hotdog/428.png inflating: hotdog/train/hotdog/475.png inflating: hotdog/train/hotdog/933.png inflating: hotdog/train/hotdog/677.png extracting: hotdog/train/hotdog/284.png inflating: hotdog/train/hotdog/728.png inflating: hotdog/train/hotdog/667.png inflating: hotdog/train/hotdog/912.png inflating: hotdog/train/hotdog/406.png inflating: hotdog/train/hotdog/333.png inflating: hotdog/train/hotdog/837.png extracting: hotdog/train/hotdog/295.png inflating: hotdog/train/hotdog/274.png inflating: hotdog/train/hotdog/307.png extracting: hotdog/train/hotdog/343.png extracting: hotdog/train/hotdog/399.png inflating: hotdog/train/hotdog/618.png inflating: hotdog/train/hotdog/358.png inflating: hotdog/train/hotdog/122.png inflating: hotdog/train/hotdog/119.png inflating: hotdog/train/hotdog/645.png extracting: hotdog/train/hotdog/231.png inflating: hotdog/train/hotdog/488.png inflating: hotdog/train/hotdog/603.png inflating: hotdog/train/hotdog/911.png inflating: hotdog/train/hotdog/328.png inflating: hotdog/train/hotdog/277.png inflating: hotdog/train/hotdog/820.png inflating: hotdog/train/hotdog/463.png inflating: hotdog/train/hotdog/361.png inflating: hotdog/train/hotdog/832.png inflating: hotdog/train/hotdog/693.png inflating: hotdog/train/hotdog/239.png extracting: hotdog/train/hotdog/606.png inflating: hotdog/train/hotdog/871.png extracting: hotdog/train/hotdog/560.png inflating: hotdog/train/hotdog/334.png inflating: hotdog/train/hotdog/405.png inflating: hotdog/train/hotdog/251.png inflating: hotdog/train/hotdog/14.png extracting: hotdog/train/hotdog/829.png inflating: hotdog/train/hotdog/12.png inflating: hotdog/train/hotdog/400.png extracting: hotdog/train/hotdog/312.png inflating: hotdog/train/hotdog/762.png inflating: hotdog/train/hotdog/789.png inflating: hotdog/train/hotdog/137.png extracting: hotdog/train/hotdog/472.png inflating: hotdog/train/hotdog/995.png inflating: hotdog/train/hotdog/359.png inflating: hotdog/train/hotdog/389.png inflating: hotdog/train/hotdog/971.png extracting: hotdog/train/hotdog/607.png inflating: hotdog/train/hotdog/282.png inflating: hotdog/train/hotdog/526.png inflating: hotdog/train/hotdog/936.png inflating: hotdog/train/hotdog/197.png inflating: hotdog/train/hotdog/362.png inflating: hotdog/train/hotdog/713.png inflating: hotdog/train/hotdog/220.png inflating: hotdog/train/hotdog/747.png extracting: hotdog/train/hotdog/97.png extracting: hotdog/train/hotdog/126.png inflating: hotdog/train/hotdog/996.png extracting: hotdog/train/hotdog/327.png inflating: hotdog/train/hotdog/438.png inflating: hotdog/train/hotdog/540.png inflating: hotdog/train/hotdog/109.png inflating: hotdog/train/hotdog/611.png inflating: hotdog/train/hotdog/292.png inflating: hotdog/train/hotdog/926.png inflating: hotdog/train/hotdog/814.png inflating: hotdog/train/hotdog/967.png inflating: hotdog/train/hotdog/683.png extracting: hotdog/train/hotdog/952.png extracting: hotdog/train/hotdog/776.png inflating: hotdog/train/hotdog/592.png inflating: hotdog/train/hotdog/68.png inflating: hotdog/train/hotdog/910.png inflating: hotdog/train/hotdog/754.png inflating: hotdog/train/hotdog/236.png inflating: hotdog/train/hotdog/847.png inflating: hotdog/train/hotdog/206.png inflating: hotdog/train/hotdog/180.png inflating: hotdog/train/hotdog/413.png inflating: hotdog/train/hotdog/681.png inflating: hotdog/train/hotdog/287.png inflating: hotdog/train/hotdog/242.png inflating: hotdog/train/hotdog/836.png inflating: hotdog/train/hotdog/145.png inflating: hotdog/train/hotdog/490.png inflating: hotdog/train/hotdog/130.png extracting: hotdog/train/hotdog/269.png inflating: hotdog/train/hotdog/189.png inflating: hotdog/train/hotdog/207.png inflating: hotdog/train/hotdog/94.png inflating: hotdog/train/hotdog/378.png inflating: hotdog/train/hotdog/341.png inflating: hotdog/train/hotdog/73.png inflating: hotdog/train/hotdog/709.png inflating: hotdog/train/hotdog/375.png inflating: hotdog/train/hotdog/993.png inflating: hotdog/train/hotdog/4.png extracting: hotdog/train/hotdog/796.png inflating: hotdog/train/hotdog/342.png inflating: hotdog/train/hotdog/881.png inflating: hotdog/train/hotdog/165.png inflating: hotdog/train/hotdog/509.png inflating: hotdog/train/hotdog/150.png inflating: hotdog/train/hotdog/196.png extracting: hotdog/train/hotdog/534.png extracting: hotdog/train/hotdog/642.png inflating: hotdog/train/hotdog/152.png inflating: hotdog/train/hotdog/434.png extracting: hotdog/train/hotdog/953.png inflating: hotdog/train/hotdog/308.png extracting: hotdog/train/hotdog/682.png inflating: hotdog/train/hotdog/595.png inflating: hotdog/train/hotdog/662.png inflating: hotdog/train/hotdog/619.png inflating: hotdog/train/hotdog/719.png extracting: hotdog/train/hotdog/437.png inflating: hotdog/train/hotdog/752.png inflating: hotdog/train/hotdog/671.png inflating: hotdog/train/hotdog/469.png inflating: hotdog/train/hotdog/83.png inflating: hotdog/train/hotdog/462.png inflating: hotdog/train/hotdog/452.png inflating: hotdog/train/hotdog/455.png inflating: hotdog/train/hotdog/115.png extracting: hotdog/train/hotdog/163.png inflating: hotdog/train/hotdog/395.png inflating: hotdog/train/hotdog/266.png inflating: hotdog/train/hotdog/605.png extracting: hotdog/train/hotdog/772.png inflating: hotdog/train/hotdog/346.png inflating: hotdog/train/hotdog/423.png extracting: hotdog/train/hotdog/88.png inflating: hotdog/train/hotdog/703.png inflating: hotdog/train/hotdog/587.png inflating: hotdog/train/hotdog/448.png inflating: hotdog/train/hotdog/44.png inflating: hotdog/train/hotdog/741.png inflating: hotdog/train/hotdog/698.png inflating: hotdog/train/hotdog/262.png extracting: hotdog/train/hotdog/181.png inflating: hotdog/train/hotdog/61.png inflating: hotdog/train/hotdog/893.png extracting: hotdog/train/hotdog/561.png inflating: hotdog/train/hotdog/245.png inflating: hotdog/train/hotdog/412.png inflating: hotdog/train/hotdog/157.png inflating: hotdog/train/hotdog/102.png inflating: hotdog/train/hotdog/612.png extracting: hotdog/train/hotdog/640.png inflating: hotdog/train/hotdog/76.png inflating: hotdog/train/hotdog/914.png inflating: hotdog/train/hotdog/799.png inflating: hotdog/train/hotdog/161.png inflating: hotdog/train/hotdog/748.png extracting: hotdog/train/hotdog/940.png inflating: hotdog/train/hotdog/117.png inflating: hotdog/train/hotdog/446.png inflating: hotdog/train/hotdog/857.png inflating: hotdog/train/hotdog/77.png extracting: hotdog/train/hotdog/229.png inflating: hotdog/train/hotdog/965.png inflating: hotdog/train/hotdog/511.png inflating: hotdog/train/hotdog/786.png inflating: hotdog/train/hotdog/248.png inflating: hotdog/train/hotdog/192.png inflating: hotdog/train/hotdog/521.png inflating: hotdog/train/hotdog/541.png inflating: hotdog/train/hotdog/241.png inflating: hotdog/train/hotdog/147.png inflating: hotdog/train/hotdog/276.png inflating: hotdog/train/hotdog/822.png inflating: hotdog/train/hotdog/445.png inflating: hotdog/train/hotdog/221.png inflating: hotdog/train/hotdog/187.png extracting: hotdog/train/hotdog/927.png inflating: hotdog/train/hotdog/957.png inflating: hotdog/train/hotdog/30.png extracting: hotdog/train/hotdog/501.png inflating: hotdog/train/hotdog/972.png extracting: hotdog/train/hotdog/162.png inflating: hotdog/train/hotdog/997.png extracting: hotdog/train/hotdog/283.png inflating: hotdog/train/hotdog/479.png inflating: hotdog/train/hotdog/303.png inflating: hotdog/train/hotdog/705.png extracting: hotdog/train/hotdog/850.png inflating: hotdog/train/hotdog/232.png inflating: hotdog/train/hotdog/90.png inflating: hotdog/train/hotdog/598.png inflating: hotdog/train/hotdog/433.png inflating: hotdog/train/hotdog/453.png inflating: hotdog/train/hotdog/418.png inflating: hotdog/train/hotdog/813.png inflating: hotdog/train/hotdog/778.png inflating: hotdog/train/hotdog/556.png inflating: hotdog/train/hotdog/992.png inflating: hotdog/train/hotdog/753.png inflating: hotdog/train/hotdog/441.png inflating: hotdog/train/hotdog/11.png extracting: hotdog/train/hotdog/924.png inflating: hotdog/train/hotdog/685.png inflating: hotdog/train/hotdog/470.png inflating: hotdog/train/hotdog/919.png inflating: hotdog/train/hotdog/986.png inflating: hotdog/train/hotdog/532.png inflating: hotdog/train/hotdog/580.png extracting: hotdog/train/hotdog/939.png inflating: hotdog/train/hotdog/951.png extracting: hotdog/train/hotdog/513.png inflating: hotdog/train/hotdog/991.png inflating: hotdog/train/hotdog/672.png inflating: hotdog/train/hotdog/982.png inflating: hotdog/train/hotdog/376.png inflating: hotdog/train/hotdog/291.png extracting: hotdog/train/hotdog/722.png inflating: hotdog/train/hotdog/530.png inflating: hotdog/train/hotdog/9.png inflating: hotdog/train/hotdog/483.png extracting: hotdog/train/hotdog/168.png inflating: hotdog/train/hotdog/209.png inflating: hotdog/train/hotdog/146.png extracting: hotdog/train/hotdog/401.png extracting: hotdog/train/hotdog/648.png extracting: hotdog/train/hotdog/430.png inflating: hotdog/train/hotdog/255.png inflating: hotdog/train/hotdog/981.png inflating: hotdog/train/hotdog/49.png extracting: hotdog/train/hotdog/649.png inflating: hotdog/train/hotdog/657.png inflating: hotdog/train/hotdog/984.png inflating: hotdog/train/hotdog/315.png inflating: hotdog/train/hotdog/678.png inflating: hotdog/train/hotdog/946.png inflating: hotdog/train/hotdog/34.png inflating: hotdog/train/hotdog/835.png inflating: hotdog/train/hotdog/517.png inflating: hotdog/train/hotdog/955.png inflating: hotdog/train/hotdog/834.png inflating: hotdog/train/hotdog/506.png inflating: hotdog/train/hotdog/883.png inflating: hotdog/train/hotdog/42.png inflating: hotdog/train/hotdog/323.png inflating: hotdog/train/hotdog/466.png inflating: hotdog/train/hotdog/247.png extracting: hotdog/train/hotdog/641.png inflating: hotdog/train/hotdog/495.png inflating: hotdog/train/hotdog/840.png inflating: hotdog/train/hotdog/281.png inflating: hotdog/train/hotdog/586.png inflating: hotdog/train/hotdog/990.png inflating: hotdog/train/hotdog/795.png inflating: hotdog/train/hotdog/644.png extracting: hotdog/train/hotdog/568.png extracting: hotdog/train/hotdog/575.png extracting: hotdog/train/hotdog/969.png inflating: hotdog/train/hotdog/330.png inflating: hotdog/train/hotdog/602.png extracting: hotdog/train/hotdog/74.png extracting: hotdog/train/hotdog/921.png inflating: hotdog/train/hotdog/848.png inflating: hotdog/train/hotdog/904.png inflating: hotdog/train/hotdog/542.png inflating: hotdog/train/hotdog/512.png inflating: hotdog/train/hotdog/978.png extracting: hotdog/train/hotdog/721.png inflating: hotdog/train/hotdog/199.png inflating: hotdog/train/hotdog/467.png inflating: hotdog/train/hotdog/812.png inflating: hotdog/train/hotdog/746.png inflating: hotdog/train/hotdog/493.png inflating: hotdog/train/hotdog/457.png inflating: hotdog/train/hotdog/562.png inflating: hotdog/train/hotdog/704.png inflating: hotdog/train/hotdog/23.png inflating: hotdog/train/hotdog/559.png inflating: hotdog/train/hotdog/344.png inflating: hotdog/train/hotdog/310.png inflating: hotdog/train/hotdog/179.png inflating: hotdog/train/hotdog/171.png extracting: hotdog/train/hotdog/120.png extracting: hotdog/train/hotdog/449.png inflating: hotdog/train/hotdog/875.png inflating: hotdog/train/hotdog/96.png inflating: hotdog/train/hotdog/714.png inflating: hotdog/train/hotdog/935.png inflating: hotdog/train/hotdog/54.png extracting: hotdog/train/hotdog/45.png inflating: hotdog/train/hotdog/716.png inflating: hotdog/train/hotdog/999.png inflating: hotdog/train/hotdog/492.png inflating: hotdog/train/hotdog/311.png inflating: hotdog/train/hotdog/364.png inflating: hotdog/train/hotdog/948.png extracting: hotdog/train/hotdog/185.png inflating: hotdog/train/hotdog/843.png inflating: hotdog/train/hotdog/141.png inflating: hotdog/train/hotdog/190.png extracting: hotdog/train/hotdog/726.png inflating: hotdog/train/hotdog/481.png inflating: hotdog/train/hotdog/516.png inflating: hotdog/train/hotdog/272.png inflating: hotdog/train/hotdog/945.png extracting: hotdog/train/hotdog/533.png inflating: hotdog/train/hotdog/565.png extracting: hotdog/train/hotdog/416.png inflating: hotdog/train/hotdog/216.png inflating: hotdog/train/hotdog/424.png inflating: hotdog/train/hotdog/382.png inflating: hotdog/train/hotdog/655.png inflating: hotdog/train/hotdog/222.png extracting: hotdog/train/hotdog/154.png inflating: hotdog/train/hotdog/249.png inflating: hotdog/train/hotdog/998.png inflating: hotdog/train/hotdog/194.png inflating: hotdog/train/hotdog/419.png extracting: hotdog/train/hotdog/852.png inflating: hotdog/train/hotdog/188.png inflating: hotdog/train/hotdog/372.png inflating: hotdog/train/hotdog/19.png inflating: hotdog/train/hotdog/259.png extracting: hotdog/train/hotdog/632.png inflating: hotdog/train/hotdog/182.png inflating: hotdog/train/hotdog/200.png inflating: hotdog/train/hotdog/474.png inflating: hotdog/train/hotdog/593.png extracting: hotdog/train/hotdog/198.png inflating: hotdog/train/hotdog/849.png inflating: hotdog/train/hotdog/489.png extracting: hotdog/train/hotdog/962.png inflating: hotdog/train/hotdog/166.png inflating: hotdog/train/hotdog/930.png inflating: hotdog/train/hotdog/994.png inflating: hotdog/train/hotdog/65.png extracting: hotdog/train/hotdog/959.png inflating: hotdog/train/hotdog/178.png inflating: hotdog/train/hotdog/518.png inflating: hotdog/train/hotdog/941.png inflating: hotdog/train/hotdog/917.png extracting: hotdog/train/hotdog/790.png inflating: hotdog/train/hotdog/823.png inflating: hotdog/train/hotdog/717.png inflating: hotdog/train/hotdog/486.png extracting: hotdog/train/hotdog/392.png inflating: hotdog/train/hotdog/730.png inflating: hotdog/train/hotdog/815.png inflating: hotdog/train/hotdog/956.png inflating: hotdog/train/hotdog/350.png extracting: hotdog/train/hotdog/900.png extracting: hotdog/train/hotdog/537.png inflating: hotdog/train/hotdog/75.png extracting: hotdog/train/hotdog/338.png inflating: hotdog/train/hotdog/788.png inflating: hotdog/train/hotdog/763.png inflating: hotdog/train/hotdog/868.png inflating: hotdog/train/hotdog/138.png inflating: hotdog/train/hotdog/409.png inflating: hotdog/train/hotdog/665.png inflating: hotdog/train/hotdog/596.png inflating: hotdog/train/hotdog/193.png extracting: hotdog/train/hotdog/732.png inflating: hotdog/train/hotdog/581.png extracting: hotdog/train/hotdog/771.png inflating: hotdog/train/hotdog/715.png extracting: hotdog/train/hotdog/436.png extracting: hotdog/train/hotdog/213.png inflating: hotdog/train/hotdog/290.png inflating: hotdog/train/hotdog/934.png extracting: hotdog/train/hotdog/56.png inflating: hotdog/train/hotdog/431.png inflating: hotdog/train/hotdog/634.png inflating: hotdog/train/hotdog/118.png inflating: hotdog/train/hotdog/906.png inflating: hotdog/train/hotdog/25.png inflating: hotdog/train/hotdog/821.png inflating: hotdog/train/hotdog/695.png extracting: hotdog/train/hotdog/1.png inflating: hotdog/train/hotdog/394.png inflating: hotdog/train/hotdog/256.png extracting: hotdog/train/hotdog/233.png inflating: hotdog/train/hotdog/349.png inflating: hotdog/train/hotdog/853.png inflating: hotdog/train/hotdog/831.png inflating: hotdog/train/hotdog/101.png inflating: hotdog/train/hotdog/383.png inflating: hotdog/train/hotdog/22.png inflating: hotdog/train/hotdog/238.png inflating: hotdog/train/hotdog/839.png inflating: hotdog/train/hotdog/856.png inflating: hotdog/train/hotdog/749.png extracting: hotdog/train/hotdog/859.png inflating: hotdog/train/hotdog/275.png inflating: hotdog/train/hotdog/80.png inflating: hotdog/train/hotdog/302.png extracting: hotdog/train/hotdog/877.png inflating: hotdog/train/hotdog/800.png inflating: hotdog/train/hotdog/356.png inflating: hotdog/train/hotdog/264.png inflating: hotdog/train/hotdog/388.png inflating: hotdog/train/hotdog/202.png inflating: hotdog/train/hotdog/670.png extracting: hotdog/train/hotdog/675.png inflating: hotdog/train/hotdog/345.png inflating: hotdog/train/hotdog/0.png inflating: hotdog/train/hotdog/548.png extracting: hotdog/train/hotdog/742.png extracting: hotdog/train/hotdog/296.png extracting: hotdog/train/hotdog/879.png extracting: hotdog/train/hotdog/977.png inflating: hotdog/train/hotdog/707.png inflating: hotdog/train/hotdog/523.png inflating: hotdog/train/hotdog/355.png inflating: hotdog/train/hotdog/60.png inflating: hotdog/train/hotdog/773.png inflating: hotdog/train/hotdog/135.png inflating: hotdog/train/hotdog/113.png inflating: hotdog/train/hotdog/663.png inflating: hotdog/train/hotdog/335.png inflating: hotdog/train/hotdog/880.png inflating: hotdog/train/hotdog/637.png extracting: hotdog/train/hotdog/724.png inflating: hotdog/train/hotdog/650.png inflating: hotdog/train/hotdog/780.png inflating: hotdog/train/hotdog/550.png inflating: hotdog/train/hotdog/638.png inflating: hotdog/train/hotdog/505.png extracting: hotdog/train/hotdog/415.png inflating: hotdog/train/hotdog/100.png inflating: hotdog/train/hotdog/635.png inflating: hotdog/train/hotdog/898.png inflating: hotdog/train/hotdog/279.png inflating: hotdog/train/hotdog/67.png inflating: hotdog/train/hotdog/736.png inflating: hotdog/train/hotdog/507.png inflating: hotdog/train/hotdog/491.png inflating: hotdog/train/hotdog/504.png inflating: hotdog/train/hotdog/112.png extracting: hotdog/train/hotdog/435.png inflating: hotdog/train/hotdog/7.png inflating: hotdog/train/hotdog/979.png inflating: hotdog/train/hotdog/98.png extracting: hotdog/train/hotdog/696.png inflating: hotdog/train/hotdog/531.png extracting: hotdog/train/hotdog/451.png inflating: hotdog/train/hotdog/701.png extracting: hotdog/train/hotdog/47.png inflating: hotdog/train/hotdog/808.png inflating: hotdog/train/hotdog/309.png inflating: hotdog/train/hotdog/443.png extracting: hotdog/train/hotdog/968.png inflating: hotdog/train/hotdog/622.png inflating: hotdog/train/hotdog/353.png inflating: hotdog/train/hotdog/317.png inflating: hotdog/train/hotdog/878.png inflating: hotdog/train/hotdog/515.png inflating: hotdog/train/hotdog/104.png inflating: hotdog/train/hotdog/391.png inflating: hotdog/train/hotdog/444.png extracting: hotdog/train/hotdog/666.png extracting: hotdog/train/hotdog/253.png inflating: hotdog/train/hotdog/41.png inflating: hotdog/train/hotdog/306.png inflating: hotdog/train/hotdog/58.png inflating: hotdog/train/hotdog/93.png extracting: hotdog/train/hotdog/551.png extracting: hotdog/train/hotdog/643.png inflating: hotdog/train/hotdog/240.png inflating: hotdog/train/hotdog/874.png inflating: hotdog/train/hotdog/947.png extracting: hotdog/train/hotdog/739.png inflating: hotdog/train/hotdog/404.png extracting: hotdog/train/hotdog/627.png inflating: hotdog/train/hotdog/687.png inflating: hotdog/train/hotdog/889.png inflating: hotdog/train/hotdog/28.png inflating: hotdog/train/hotdog/177.png inflating: hotdog/train/hotdog/908.png inflating: hotdog/train/hotdog/758.png inflating: hotdog/train/hotdog/429.png inflating: hotdog/train/hotdog/71.png inflating: hotdog/train/hotdog/818.png extracting: hotdog/train/hotdog/183.png inflating: hotdog/train/hotdog/867.png inflating: hotdog/train/hotdog/212.png inflating: hotdog/train/hotdog/468.png inflating: hotdog/train/hotdog/570.png inflating: hotdog/train/hotdog/128.png inflating: hotdog/train/hotdog/964.png inflating: hotdog/train/hotdog/288.png inflating: hotdog/train/hotdog/139.png inflating: hotdog/train/hotdog/608.png inflating: hotdog/train/hotdog/760.png inflating: hotdog/train/hotdog/751.png extracting: hotdog/train/hotdog/29.png inflating: hotdog/train/hotdog/273.png inflating: hotdog/train/hotdog/186.png inflating: hotdog/train/hotdog/585.png inflating: hotdog/train/hotdog/801.png inflating: hotdog/train/hotdog/496.png inflating: hotdog/train/hotdog/527.png inflating: hotdog/train/hotdog/57.png extracting: hotdog/train/hotdog/567.png inflating: hotdog/train/hotdog/804.png extracting: hotdog/train/hotdog/943.png extracting: hotdog/train/hotdog/473.png inflating: hotdog/train/hotdog/897.png extracting: hotdog/train/hotdog/966.png inflating: hotdog/train/hotdog/15.png inflating: hotdog/train/hotdog/129.png inflating: hotdog/train/hotdog/371.png inflating: hotdog/train/hotdog/702.png inflating: hotdog/train/hotdog/557.png extracting: hotdog/train/hotdog/320.png inflating: hotdog/train/hotdog/454.png extracting: hotdog/train/hotdog/613.png inflating: hotdog/train/hotdog/319.png extracting: hotdog/train/hotdog/471.png extracting: hotdog/train/hotdog/579.png inflating: hotdog/train/hotdog/484.png inflating: hotdog/train/hotdog/480.png extracting: hotdog/train/hotdog/410.png inflating: hotdog/train/hotdog/528.png inflating: hotdog/train/hotdog/227.png inflating: hotdog/train/hotdog/123.png inflating: hotdog/train/hotdog/121.png extracting: hotdog/train/hotdog/170.png inflating: hotdog/train/hotdog/937.png extracting: hotdog/train/hotdog/764.png inflating: hotdog/train/hotdog/363.png inflating: hotdog/train/hotdog/668.png inflating: hotdog/train/hotdog/107.png inflating: hotdog/train/hotdog/599.png inflating: hotdog/train/hotdog/866.png inflating: hotdog/train/hotdog/767.png inflating: hotdog/train/hotdog/329.png inflating: hotdog/train/hotdog/417.png inflating: hotdog/train/hotdog/636.png extracting: hotdog/train/hotdog/228.png extracting: hotdog/train/hotdog/169.png extracting: hotdog/train/hotdog/458.png inflating: hotdog/train/hotdog/549.png inflating: hotdog/train/hotdog/92.png inflating: hotdog/train/hotdog/27.png inflating: hotdog/train/hotdog/79.png inflating: hotdog/train/hotdog/257.png inflating: hotdog/train/hotdog/246.png inflating: hotdog/train/hotdog/114.png inflating: hotdog/train/hotdog/514.png inflating: hotdog/train/hotdog/617.png extracting: hotdog/train/hotdog/234.png inflating: hotdog/train/hotdog/864.png inflating: hotdog/train/hotdog/817.png inflating: hotdog/train/hotdog/669.png inflating: hotdog/train/hotdog/482.png inflating: hotdog/train/hotdog/811.png extracting: hotdog/train/hotdog/85.png inflating: hotdog/train/hotdog/699.png inflating: hotdog/train/hotdog/558.png extracting: hotdog/train/hotdog/851.png inflating: hotdog/train/hotdog/39.png extracting: hotdog/train/hotdog/285.png inflating: hotdog/train/hotdog/237.png inflating: hotdog/train/hotdog/81.png inflating: hotdog/train/hotdog/784.png inflating: hotdog/train/hotdog/26.png extracting: hotdog/train/hotdog/692.png inflating: hotdog/train/hotdog/267.png inflating: hotdog/train/hotdog/828.png inflating: hotdog/train/hotdog/414.png inflating: hotdog/train/hotdog/158.png extracting: hotdog/train/hotdog/582.png inflating: hotdog/train/hotdog/674.png inflating: hotdog/train/hotdog/62.png extracting: hotdog/train/hotdog/882.png inflating: hotdog/train/hotdog/720.png extracting: hotdog/train/hotdog/331.png inflating: hotdog/train/hotdog/132.png inflating: hotdog/train/hotdog/442.png extracting: hotdog/train/hotdog/204.png inflating: hotdog/train/hotdog/425.png extracting: hotdog/train/hotdog/870.png extracting: hotdog/train/hotdog/365.png inflating: hotdog/train/hotdog/465.png inflating: hotdog/train/hotdog/215.png inflating: hotdog/train/hotdog/326.png inflating: hotdog/train/hotdog/421.png inflating: hotdog/train/hotdog/628.png inflating: hotdog/train/hotdog/263.png inflating: hotdog/train/hotdog/6.png inflating: hotdog/train/hotdog/830.png inflating: hotdog/train/hotdog/958.png inflating: hotdog/train/hotdog/920.png inflating: hotdog/train/hotdog/131.png inflating: hotdog/train/hotdog/519.png inflating: hotdog/train/hotdog/460.png inflating: hotdog/train/hotdog/546.png inflating: hotdog/train/hotdog/782.png inflating: hotdog/train/hotdog/380.png inflating: hotdog/train/hotdog/597.png inflating: hotdog/train/hotdog/500.png inflating: hotdog/train/hotdog/367.png extracting: hotdog/train/hotdog/125.png inflating: hotdog/train/hotdog/578.png inflating: hotdog/train/hotdog/539.png inflating: hotdog/train/hotdog/684.png inflating: hotdog/train/hotdog/706.png inflating: hotdog/train/hotdog/459.png inflating: hotdog/train/hotdog/931.png extracting: hotdog/train/hotdog/825.png inflating: hotdog/train/hotdog/858.png inflating: hotdog/train/hotdog/863.png inflating: hotdog/train/hotdog/72.png inflating: hotdog/train/hotdog/503.png extracting: hotdog/train/hotdog/420.png inflating: hotdog/train/hotdog/390.png inflating: hotdog/train/hotdog/909.png inflating: hotdog/train/hotdog/735.png inflating: hotdog/train/hotdog/84.png inflating: hotdog/train/hotdog/827.png inflating: hotdog/train/hotdog/396.png inflating: hotdog/train/hotdog/806.png inflating: hotdog/train/hotdog/16.png inflating: hotdog/train/hotdog/712.png inflating: hotdog/train/hotdog/422.png inflating: hotdog/train/hotdog/300.png inflating: hotdog/train/hotdog/32.png inflating: hotdog/train/hotdog/2.png inflating: hotdog/train/hotdog/195.png inflating: hotdog/train/hotdog/402.png inflating: hotdog/train/hotdog/574.png inflating: hotdog/train/hotdog/301.png inflating: hotdog/train/hotdog/224.png inflating: hotdog/train/hotdog/53.png inflating: hotdog/train/hotdog/8.png inflating: hotdog/train/hotdog/18.png extracting: hotdog/train/hotdog/923.png extracting: hotdog/train/hotdog/316.png inflating: hotdog/train/hotdog/485.png inflating: hotdog/train/hotdog/40.png extracting: hotdog/train/hotdog/314.png inflating: hotdog/train/hotdog/243.png inflating: hotdog/train/hotdog/777.png inflating: hotdog/train/hotdog/865.png inflating: hotdog/train/hotdog/555.png inflating: hotdog/train/hotdog/869.png inflating: hotdog/train/hotdog/20.png extracting: hotdog/train/hotdog/271.png inflating: hotdog/train/hotdog/826.png inflating: hotdog/train/hotdog/427.png inflating: hotdog/train/hotdog/10.png inflating: hotdog/train/hotdog/624.png inflating: hotdog/train/hotdog/781.png extracting: hotdog/train/hotdog/381.png inflating: hotdog/train/hotdog/134.png inflating: hotdog/train/hotdog/929.png inflating: hotdog/train/hotdog/651.png inflating: hotdog/train/hotdog/774.png inflating: hotdog/train/hotdog/456.png inflating: hotdog/train/hotdog/305.png extracting: hotdog/train/hotdog/235.png extracting: hotdog/train/hotdog/918.png extracting: hotdog/train/hotdog/583.png inflating: hotdog/train/hotdog/591.png extracting: hotdog/train/hotdog/718.png inflating: hotdog/train/hotdog/876.png extracting: hotdog/train/hotdog/398.png inflating: hotdog/train/hotdog/520.png inflating: hotdog/train/hotdog/768.png inflating: hotdog/train/hotdog/293.png inflating: hotdog/train/hotdog/802.png inflating: hotdog/train/hotdog/89.png inflating: hotdog/train/hotdog/366.png extracting: hotdog/train/hotdog/727.png inflating: hotdog/train/hotdog/91.png extracting: hotdog/train/hotdog/791.png inflating: hotdog/train/hotdog/960.png extracting: hotdog/train/hotdog/809.png extracting: hotdog/train/hotdog/646.png inflating: hotdog/train/hotdog/988.png inflating: hotdog/train/hotdog/36.png inflating: hotdog/train/hotdog/620.png inflating: hotdog/train/hotdog/347.png inflating: hotdog/train/hotdog/755.png inflating: hotdog/train/hotdog/377.png extracting: hotdog/train/hotdog/43.png inflating: hotdog/train/hotdog/529.png inflating: hotdog/train/hotdog/261.png extracting: hotdog/train/hotdog/819.png inflating: hotdog/train/hotdog/887.png inflating: hotdog/train/hotdog/258.png inflating: hotdog/train/hotdog/174.png inflating: hotdog/train/hotdog/324.png inflating: hotdog/train/hotdog/854.png inflating: hotdog/train/hotdog/629.png inflating: hotdog/train/hotdog/149.png inflating: hotdog/train/hotdog/432.png extracting: hotdog/train/hotdog/499.png inflating: hotdog/train/hotdog/254.png inflating: hotdog/train/hotdog/370.png inflating: hotdog/train/hotdog/387.png inflating: hotdog/train/hotdog/664.png extracting: hotdog/train/hotdog/723.png inflating: hotdog/train/hotdog/447.png inflating: hotdog/train/hotdog/950.png inflating: hotdog/train/hotdog/872.png inflating: hotdog/train/hotdog/384.png inflating: hotdog/train/hotdog/210.png inflating: hotdog/train/hotdog/621.png inflating: hotdog/train/hotdog/980.png inflating: hotdog/train/hotdog/464.png inflating: hotdog/train/hotdog/31.png inflating: hotdog/train/hotdog/148.png inflating: hotdog/train/hotdog/289.png inflating: hotdog/train/hotdog/652.png inflating: hotdog/train/hotdog/64.png inflating: hotdog/train/hotdog/846.png extracting: hotdog/train/hotdog/785.png extracting: hotdog/train/hotdog/280.png inflating: hotdog/train/hotdog/357.png extracting: hotdog/train/hotdog/270.png extracting: hotdog/train/hotdog/24.png inflating: hotdog/train/hotdog/572.png extracting: hotdog/train/hotdog/569.png inflating: hotdog/train/hotdog/886.png inflating: hotdog/train/hotdog/679.png inflating: hotdog/train/hotdog/545.png extracting: hotdog/train/hotdog/738.png inflating: hotdog/train/hotdog/136.png inflating: hotdog/train/hotdog/524.png inflating: hotdog/train/hotdog/905.png inflating: hotdog/train/hotdog/783.png inflating: hotdog/train/hotdog/348.png inflating: hotdog/train/hotdog/798.png inflating: hotdog/train/hotdog/547.png extracting: hotdog/train/hotdog/21.png inflating: hotdog/train/hotdog/156.png extracting: hotdog/train/hotdog/873.png inflating: hotdog/train/hotdog/184.png inflating: hotdog/train/hotdog/205.png inflating: hotdog/train/hotdog/69.png inflating: hotdog/train/hotdog/55.png inflating: hotdog/train/hotdog/325.png inflating: hotdog/train/hotdog/155.png inflating: hotdog/train/hotdog/278.png inflating: hotdog/train/hotdog/740.png inflating: hotdog/train/hotdog/961.png inflating: hotdog/train/hotdog/294.png extracting: hotdog/train/hotdog/896.png inflating: hotdog/train/hotdog/38.png inflating: hotdog/train/hotdog/127.png inflating: hotdog/train/hotdog/140.png extracting: hotdog/train/hotdog/201.png inflating: hotdog/train/hotdog/440.png inflating: hotdog/train/hotdog/589.png extracting: hotdog/train/hotdog/942.png inflating: hotdog/train/hotdog/106.png inflating: hotdog/train/hotdog/321.png inflating: hotdog/train/hotdog/954.png inflating: hotdog/train/hotdog/111.png inflating: hotdog/train/hotdog/124.png extracting: hotdog/train/hotdog/576.png inflating: hotdog/train/hotdog/217.png inflating: hotdog/train/hotdog/35.png inflating: hotdog/train/hotdog/379.png inflating: hotdog/train/hotdog/974.png inflating: hotdog/train/hotdog/803.png inflating: hotdog/train/hotdog/477.png extracting: hotdog/train/hotdog/985.png inflating: hotdog/train/hotdog/172.png extracting: hotdog/train/hotdog/339.png inflating: hotdog/train/hotdog/769.png inflating: hotdog/train/hotdog/838.png inflating: hotdog/train/hotdog/734.png inflating: hotdog/train/hotdog/686.png inflating: hotdog/train/hotdog/807.png inflating: hotdog/train/hotdog/949.png inflating: hotdog/train/hotdog/498.png inflating: hotdog/train/hotdog/833.png extracting: hotdog/train/hotdog/461.png inflating: hotdog/train/hotdog/891.png inflating: hotdog/train/hotdog/983.png inflating: hotdog/train/hotdog/244.png inflating: hotdog/train/hotdog/797.png inflating: hotdog/train/hotdog/775.png inflating: hotdog/train/hotdog/604.png inflating: hotdog/train/hotdog/892.png inflating: hotdog/train/hotdog/989.png inflating: hotdog/train/hotdog/973.png inflating: hotdog/train/hotdog/673.png extracting: hotdog/train/hotdog/770.png inflating: hotdog/train/hotdog/816.png inflating: hotdog/train/hotdog/191.png inflating: hotdog/train/hotdog/890.png inflating: hotdog/train/hotdog/944.png extracting: hotdog/train/hotdog/374.png inflating: hotdog/train/hotdog/525.png extracting: hotdog/train/hotdog/885.png inflating: hotdog/train/hotdog/133.png extracting: hotdog/train/hotdog/725.png inflating: hotdog/train/hotdog/337.png inflating: hotdog/train/hotdog/385.png inflating: hotdog/train/hotdog/884.png inflating: hotdog/train/hotdog/594.png inflating: hotdog/train/hotdog/654.png inflating: hotdog/train/hotdog/226.png inflating: hotdog/train/hotdog/661.png inflating: hotdog/train/hotdog/737.png inflating: hotdog/train/hotdog/48.png inflating: hotdog/train/hotdog/322.png inflating: hotdog/train/hotdog/408.png inflating: hotdog/train/hotdog/478.png extracting: hotdog/train/hotdog/925.png inflating: hotdog/train/hotdog/614.png extracting: hotdog/train/hotdog/577.png inflating: hotdog/train/hotdog/690.png inflating: hotdog/train/hotdog/543.png inflating: hotdog/train/hotdog/694.png inflating: hotdog/train/hotdog/3.png inflating: hotdog/train/hotdog/862.png inflating: hotdog/train/hotdog/658.png inflating: hotdog/train/hotdog/708.png inflating: hotdog/train/hotdog/563.png inflating: hotdog/train/hotdog/167.png inflating: hotdog/train/hotdog/759.png inflating: hotdog/train/hotdog/252.png inflating: hotdog/train/hotdog/615.png inflating: hotdog/train/hotdog/336.png extracting: hotdog/train/hotdog/688.png inflating: hotdog/train/hotdog/360.png inflating: hotdog/train/hotdog/913.png inflating: hotdog/train/hotdog/888.png inflating: hotdog/train/hotdog/368.png inflating: hotdog/train/hotdog/268.png inflating: hotdog/train/hotdog/963.png inflating: hotdog/train/hotdog/616.png extracting: hotdog/train/hotdog/13.png inflating: hotdog/train/hotdog/600.png inflating: hotdog/train/hotdog/639.png inflating: hotdog/train/hotdog/59.png inflating: hotdog/train/hotdog/691.png inflating: hotdog/train/hotdog/824.png inflating: hotdog/train/hotdog/566.png inflating: hotdog/train/hotdog/373.png inflating: hotdog/train/hotdog/297.png inflating: hotdog/train/hotdog/33.png inflating: hotdog/train/hotdog/313.png inflating: hotdog/train/hotdog/656.png inflating: hotdog/train/hotdog/411.png inflating: hotdog/train/hotdog/733.png inflating: hotdog/train/hotdog/86.png inflating: hotdog/train/hotdog/757.png inflating: hotdog/train/hotdog/928.png extracting: hotdog/train/hotdog/787.png inflating: hotdog/train/hotdog/987.png inflating: hotdog/train/hotdog/573.png inflating: hotdog/train/hotdog/901.png inflating: hotdog/train/hotdog/609.png extracting: hotdog/train/hotdog/711.png extracting: hotdog/train/hotdog/214.png inflating: hotdog/train/hotdog/700.png inflating: hotdog/train/hotdog/497.png inflating: hotdog/train/hotdog/793.png inflating: hotdog/train/hotdog/298.png extracting: hotdog/train/hotdog/340.png inflating: hotdog/train/hotdog/173.png inflating: hotdog/train/hotdog/588.png extracting: hotdog/train/hotdog/601.png inflating: hotdog/train/hotdog/175.png inflating: hotdog/train/hotdog/680.png inflating: hotdog/train/hotdog/805.png extracting: hotdog/train/hotdog/750.png extracting: hotdog/train/hotdog/508.png inflating: hotdog/train/hotdog/810.png inflating: hotdog/train/hotdog/861.png inflating: hotdog/train/hotdog/225.png inflating: hotdog/train/hotdog/538.png inflating: hotdog/train/hotdog/386.png inflating: hotdog/train/hotdog/895.png inflating: hotdog/train/hotdog/902.png inflating: hotdog/train/hotdog/899.png inflating: hotdog/train/hotdog/403.png inflating: hotdog/train/hotdog/633.png extracting: hotdog/train/hotdog/630.png inflating: hotdog/train/hotdog/352.png inflating: hotdog/train/hotdog/756.png inflating: hotdog/train/hotdog/66.png extracting: hotdog/train/hotdog/845.png inflating: hotdog/train/hotdog/689.png extracting: hotdog/train/hotdog/164.png extracting: hotdog/train/hotdog/623.png inflating: hotdog/train/hotdog/46.png inflating: hotdog/train/hotdog/765.png inflating: hotdog/train/hotdog/653.png inflating: hotdog/train/hotdog/571.png extracting: hotdog/train/hotdog/631.png inflating: hotdog/train/hotdog/211.png extracting: hotdog/train/hotdog/766.png inflating: hotdog/train/hotdog/63.png inflating: hotdog/train/hotdog/660.png inflating: hotdog/train/hotdog/907.png extracting: hotdog/train/hotdog/975.png extracting: hotdog/train/hotdog/535.png inflating: hotdog/train/hotdog/176.png inflating: hotdog/train/hotdog/743.png inflating: hotdog/train/hotdog/351.png inflating: hotdog/train/hotdog/52.png extracting: hotdog/train/hotdog/265.png inflating: hotdog/train/hotdog/792.png inflating: hotdog/train/hotdog/250.png extracting: hotdog/train/hotdog/203.png extracting: hotdog/train/hotdog/970.png extracting: hotdog/train/hotdog/625.png inflating: hotdog/train/hotdog/729.png inflating: hotdog/train/hotdog/841.png inflating: hotdog/train/hotdog/153.png inflating: hotdog/train/hotdog/105.png inflating: hotdog/train/hotdog/393.png inflating: hotdog/train/hotdog/160.png extracting: hotdog/train/hotdog/286.png inflating: hotdog/train/hotdog/584.png inflating: hotdog/train/hotdog/731.png inflating: hotdog/train/hotdog/37.png inflating: hotdog/train/hotdog/51.png inflating: hotdog/train/hotdog/536.png extracting: hotdog/train/hotdog/710.png inflating: hotdog/train/hotdog/218.png inflating: hotdog/train/hotdog/108.png inflating: hotdog/train/hotdog/938.png inflating: hotdog/train/hotdog/151.png inflating: hotdog/train/hotdog/426.png inflating: hotdog/train/hotdog/976.png extracting: hotdog/train/hotdog/844.png inflating: hotdog/train/hotdog/476.png inflating: hotdog/train/hotdog/99.png inflating: hotdog/train/hotdog/855.png inflating: hotdog/train/hotdog/369.png extracting: hotdog/train/hotdog/647.png inflating: hotdog/train/hotdog/354.png extracting: hotdog/train/hotdog/916.png inflating: hotdog/train/hotdog/564.png inflating: hotdog/train/hotdog/761.png inflating: hotdog/train/hotdog/610.png inflating: hotdog/train/hotdog/903.png extracting: hotdog/train/hotdog/318.png inflating: hotdog/train/hotdog/676.png inflating: hotdog/train/hotdog/78.png extracting: hotdog/train/hotdog/260.png inflating: hotdog/train/hotdog/744.png inflating: hotdog/train/hotdog/439.png inflating: hotdog/train/hotdog/659.png inflating: hotdog/train/hotdog/87.png extracting: hotdog/train/hotdog/590.png extracting: hotdog/train/hotdog/932.png inflating: hotdog/train/hotdog/487.png extracting: hotdog/train/hotdog/230.png inflating: hotdog/train/hotdog/159.png inflating: hotdog/train/hotdog/552.png inflating: hotdog/train/hotdog/103.png inflating: hotdog/train/hotdog/208.png extracting: hotdog/train/hotdog/5.png inflating: hotdog/train/hotdog/143.png extracting: hotdog/train/hotdog/95.png inflating: hotdog/train/hotdog/144.png inflating: hotdog/train/hotdog/779.png inflating: hotdog/train/hotdog/332.png inflating: hotdog/train/hotdog/915.png inflating: hotdog/train/hotdog/142.png extracting: hotdog/train/hotdog/745.png inflating: hotdog/train/hotdog/110.png inflating: hotdog/train/hotdog/70.png inflating: hotdog/train/hotdog/82.png inflating: hotdog/train/hotdog/494.png extracting: hotdog/train/hotdog/860.png inflating: hotdog/train/hotdog/894.png inflating: hotdog/train/hotdog/116.png extracting: hotdog/train/hotdog/626.png inflating: hotdog/train/hotdog/794.png extracting: hotdog/train/hotdog/697.png inflating: hotdog/train/hotdog/407.png inflating: hotdog/train/hotdog/842.png extracting: hotdog/train/hotdog/922.png extracting: hotdog/train/hotdog/450.png inflating: hotdog/train/hotdog/553.png inflating: hotdog/train/hotdog/502.png inflating: hotdog/train/hotdog/304.png inflating: hotdog/train/hotdog/219.png inflating: hotdog/train/hotdog/544.png inflating: hotdog/train/hotdog/397.png inflating: hotdog/train/hotdog/17.png inflating: hotdog/train/hotdog/510.png inflating: hotdog/train/hotdog/223.png inflating: hotdog/train/hotdog/522.png creating: hotdog/test/ creating: hotdog/test/not-hotdog/ inflating: hotdog/test/not-hotdog/1379.png inflating: hotdog/test/not-hotdog/1388.png inflating: hotdog/test/not-hotdog/1067.png extracting: hotdog/test/not-hotdog/1383.png inflating: hotdog/test/not-hotdog/1377.png inflating: hotdog/test/not-hotdog/1015.png inflating: hotdog/test/not-hotdog/1172.png inflating: hotdog/test/not-hotdog/1030.png inflating: hotdog/test/not-hotdog/1114.png inflating: hotdog/test/not-hotdog/1186.png inflating: hotdog/test/not-hotdog/1200.png inflating: hotdog/test/not-hotdog/1380.png inflating: hotdog/test/not-hotdog/1247.png extracting: hotdog/test/not-hotdog/1206.png extracting: hotdog/test/not-hotdog/1246.png inflating: hotdog/test/not-hotdog/1227.png inflating: hotdog/test/not-hotdog/1079.png extracting: hotdog/test/not-hotdog/1297.png extracting: hotdog/test/not-hotdog/1378.png inflating: hotdog/test/not-hotdog/1286.png extracting: hotdog/test/not-hotdog/1045.png inflating: hotdog/test/not-hotdog/1138.png inflating: hotdog/test/not-hotdog/1299.png inflating: hotdog/test/not-hotdog/1118.png inflating: hotdog/test/not-hotdog/1047.png inflating: hotdog/test/not-hotdog/1303.png extracting: hotdog/test/not-hotdog/1089.png extracting: hotdog/test/not-hotdog/1033.png extracting: hotdog/test/not-hotdog/1205.png inflating: hotdog/test/not-hotdog/1073.png inflating: hotdog/test/not-hotdog/1305.png inflating: hotdog/test/not-hotdog/1195.png inflating: hotdog/test/not-hotdog/1371.png inflating: hotdog/test/not-hotdog/1392.png inflating: hotdog/test/not-hotdog/1024.png inflating: hotdog/test/not-hotdog/1319.png inflating: hotdog/test/not-hotdog/1287.png extracting: hotdog/test/not-hotdog/1048.png inflating: hotdog/test/not-hotdog/1155.png inflating: hotdog/test/not-hotdog/1217.png extracting: hotdog/test/not-hotdog/1060.png extracting: hotdog/test/not-hotdog/1203.png inflating: hotdog/test/not-hotdog/1090.png inflating: hotdog/test/not-hotdog/1304.png inflating: hotdog/test/not-hotdog/1063.png inflating: hotdog/test/not-hotdog/1387.png extracting: hotdog/test/not-hotdog/1267.png inflating: hotdog/test/not-hotdog/1219.png extracting: hotdog/test/not-hotdog/1182.png inflating: hotdog/test/not-hotdog/1012.png inflating: hotdog/test/not-hotdog/1139.png extracting: hotdog/test/not-hotdog/1257.png inflating: hotdog/test/not-hotdog/1281.png extracting: hotdog/test/not-hotdog/1315.png inflating: hotdog/test/not-hotdog/1028.png inflating: hotdog/test/not-hotdog/1220.png inflating: hotdog/test/not-hotdog/1116.png inflating: hotdog/test/not-hotdog/1191.png inflating: hotdog/test/not-hotdog/1188.png inflating: hotdog/test/not-hotdog/1391.png inflating: hotdog/test/not-hotdog/1034.png inflating: hotdog/test/not-hotdog/1181.png extracting: hotdog/test/not-hotdog/1354.png inflating: hotdog/test/not-hotdog/1105.png inflating: hotdog/test/not-hotdog/1144.png inflating: hotdog/test/not-hotdog/1252.png inflating: hotdog/test/not-hotdog/1249.png extracting: hotdog/test/not-hotdog/1035.png extracting: hotdog/test/not-hotdog/1365.png extracting: hotdog/test/not-hotdog/1347.png extracting: hotdog/test/not-hotdog/1005.png extracting: hotdog/test/not-hotdog/1361.png inflating: hotdog/test/not-hotdog/1038.png inflating: hotdog/test/not-hotdog/1357.png extracting: hotdog/test/not-hotdog/1070.png inflating: hotdog/test/not-hotdog/1399.png inflating: hotdog/test/not-hotdog/1113.png inflating: hotdog/test/not-hotdog/1167.png inflating: hotdog/test/not-hotdog/1112.png inflating: hotdog/test/not-hotdog/1384.png extracting: hotdog/test/not-hotdog/1213.png inflating: hotdog/test/not-hotdog/1342.png extracting: hotdog/test/not-hotdog/1362.png inflating: hotdog/test/not-hotdog/1085.png inflating: hotdog/test/not-hotdog/1131.png inflating: hotdog/test/not-hotdog/1027.png inflating: hotdog/test/not-hotdog/1002.png extracting: hotdog/test/not-hotdog/1254.png extracting: hotdog/test/not-hotdog/1291.png inflating: hotdog/test/not-hotdog/1259.png inflating: hotdog/test/not-hotdog/1121.png extracting: hotdog/test/not-hotdog/1154.png inflating: hotdog/test/not-hotdog/1279.png extracting: hotdog/test/not-hotdog/1044.png extracting: hotdog/test/not-hotdog/1314.png inflating: hotdog/test/not-hotdog/1087.png inflating: hotdog/test/not-hotdog/1311.png inflating: hotdog/test/not-hotdog/1095.png extracting: hotdog/test/not-hotdog/1056.png inflating: hotdog/test/not-hotdog/1289.png inflating: hotdog/test/not-hotdog/1351.png inflating: hotdog/test/not-hotdog/1355.png extracting: hotdog/test/not-hotdog/1352.png inflating: hotdog/test/not-hotdog/1046.png extracting: hotdog/test/not-hotdog/1052.png inflating: hotdog/test/not-hotdog/1043.png extracting: hotdog/test/not-hotdog/1356.png inflating: hotdog/test/not-hotdog/1146.png extracting: hotdog/test/not-hotdog/1283.png extracting: hotdog/test/not-hotdog/1127.png inflating: hotdog/test/not-hotdog/1107.png inflating: hotdog/test/not-hotdog/1248.png inflating: hotdog/test/not-hotdog/1376.png extracting: hotdog/test/not-hotdog/1264.png extracting: hotdog/test/not-hotdog/1394.png inflating: hotdog/test/not-hotdog/1278.png extracting: hotdog/test/not-hotdog/1120.png extracting: hotdog/test/not-hotdog/1226.png extracting: hotdog/test/not-hotdog/1323.png extracting: hotdog/test/not-hotdog/1076.png inflating: hotdog/test/not-hotdog/1083.png inflating: hotdog/test/not-hotdog/1218.png extracting: hotdog/test/not-hotdog/1363.png inflating: hotdog/test/not-hotdog/1092.png inflating: hotdog/test/not-hotdog/1014.png inflating: hotdog/test/not-hotdog/1320.png inflating: hotdog/test/not-hotdog/1074.png extracting: hotdog/test/not-hotdog/1306.png inflating: hotdog/test/not-hotdog/1081.png inflating: hotdog/test/not-hotdog/1212.png inflating: hotdog/test/not-hotdog/1251.png extracting: hotdog/test/not-hotdog/1348.png inflating: hotdog/test/not-hotdog/1166.png inflating: hotdog/test/not-hotdog/1262.png inflating: hotdog/test/not-hotdog/1300.png inflating: hotdog/test/not-hotdog/1263.png inflating: hotdog/test/not-hotdog/1360.png extracting: hotdog/test/not-hotdog/1136.png inflating: hotdog/test/not-hotdog/1164.png inflating: hotdog/test/not-hotdog/1042.png inflating: hotdog/test/not-hotdog/1340.png inflating: hotdog/test/not-hotdog/1007.png inflating: hotdog/test/not-hotdog/1302.png inflating: hotdog/test/not-hotdog/1165.png inflating: hotdog/test/not-hotdog/1031.png inflating: hotdog/test/not-hotdog/1059.png inflating: hotdog/test/not-hotdog/1137.png inflating: hotdog/test/not-hotdog/1337.png inflating: hotdog/test/not-hotdog/1225.png inflating: hotdog/test/not-hotdog/1096.png extracting: hotdog/test/not-hotdog/1308.png extracting: hotdog/test/not-hotdog/1214.png inflating: hotdog/test/not-hotdog/1037.png inflating: hotdog/test/not-hotdog/1386.png inflating: hotdog/test/not-hotdog/1250.png inflating: hotdog/test/not-hotdog/1050.png inflating: hotdog/test/not-hotdog/1318.png inflating: hotdog/test/not-hotdog/1322.png inflating: hotdog/test/not-hotdog/1020.png inflating: hotdog/test/not-hotdog/1325.png inflating: hotdog/test/not-hotdog/1238.png inflating: hotdog/test/not-hotdog/1364.png inflating: hotdog/test/not-hotdog/1098.png extracting: hotdog/test/not-hotdog/1298.png extracting: hotdog/test/not-hotdog/1296.png inflating: hotdog/test/not-hotdog/1153.png inflating: hotdog/test/not-hotdog/1025.png inflating: hotdog/test/not-hotdog/1294.png inflating: hotdog/test/not-hotdog/1117.png extracting: hotdog/test/not-hotdog/1062.png inflating: hotdog/test/not-hotdog/1017.png inflating: hotdog/test/not-hotdog/1276.png extracting: hotdog/test/not-hotdog/1011.png inflating: hotdog/test/not-hotdog/1273.png inflating: hotdog/test/not-hotdog/1317.png extracting: hotdog/test/not-hotdog/1122.png inflating: hotdog/test/not-hotdog/1346.png inflating: hotdog/test/not-hotdog/1134.png inflating: hotdog/test/not-hotdog/1115.png inflating: hotdog/test/not-hotdog/1245.png extracting: hotdog/test/not-hotdog/1270.png inflating: hotdog/test/not-hotdog/1084.png inflating: hotdog/test/not-hotdog/1390.png inflating: hotdog/test/not-hotdog/1269.png inflating: hotdog/test/not-hotdog/1330.png inflating: hotdog/test/not-hotdog/1189.png inflating: hotdog/test/not-hotdog/1022.png inflating: hotdog/test/not-hotdog/1173.png extracting: hotdog/test/not-hotdog/1288.png inflating: hotdog/test/not-hotdog/1239.png extracting: hotdog/test/not-hotdog/1256.png inflating: hotdog/test/not-hotdog/1343.png inflating: hotdog/test/not-hotdog/1193.png inflating: hotdog/test/not-hotdog/1103.png inflating: hotdog/test/not-hotdog/1333.png extracting: hotdog/test/not-hotdog/1204.png inflating: hotdog/test/not-hotdog/1194.png inflating: hotdog/test/not-hotdog/1008.png extracting: hotdog/test/not-hotdog/1215.png inflating: hotdog/test/not-hotdog/1295.png inflating: hotdog/test/not-hotdog/1150.png inflating: hotdog/test/not-hotdog/1242.png inflating: hotdog/test/not-hotdog/1210.png inflating: hotdog/test/not-hotdog/1396.png inflating: hotdog/test/not-hotdog/1055.png inflating: hotdog/test/not-hotdog/1086.png inflating: hotdog/test/not-hotdog/1258.png inflating: hotdog/test/not-hotdog/1145.png inflating: hotdog/test/not-hotdog/1338.png inflating: hotdog/test/not-hotdog/1202.png inflating: hotdog/test/not-hotdog/1353.png inflating: hotdog/test/not-hotdog/1290.png extracting: hotdog/test/not-hotdog/1132.png inflating: hotdog/test/not-hotdog/1235.png inflating: hotdog/test/not-hotdog/1039.png extracting: hotdog/test/not-hotdog/1266.png inflating: hotdog/test/not-hotdog/1023.png inflating: hotdog/test/not-hotdog/1123.png inflating: hotdog/test/not-hotdog/1163.png inflating: hotdog/test/not-hotdog/1111.png inflating: hotdog/test/not-hotdog/1057.png inflating: hotdog/test/not-hotdog/1369.png extracting: hotdog/test/not-hotdog/1331.png extracting: hotdog/test/not-hotdog/1366.png extracting: hotdog/test/not-hotdog/1237.png inflating: hotdog/test/not-hotdog/1307.png inflating: hotdog/test/not-hotdog/1313.png inflating: hotdog/test/not-hotdog/1312.png inflating: hotdog/test/not-hotdog/1126.png inflating: hotdog/test/not-hotdog/1161.png inflating: hotdog/test/not-hotdog/1003.png inflating: hotdog/test/not-hotdog/1018.png inflating: hotdog/test/not-hotdog/1280.png inflating: hotdog/test/not-hotdog/1158.png inflating: hotdog/test/not-hotdog/1128.png extracting: hotdog/test/not-hotdog/1359.png inflating: hotdog/test/not-hotdog/1341.png inflating: hotdog/test/not-hotdog/1375.png extracting: hotdog/test/not-hotdog/1149.png extracting: hotdog/test/not-hotdog/1241.png extracting: hotdog/test/not-hotdog/1094.png inflating: hotdog/test/not-hotdog/1129.png inflating: hotdog/test/not-hotdog/1332.png inflating: hotdog/test/not-hotdog/1196.png inflating: hotdog/test/not-hotdog/1004.png inflating: hotdog/test/not-hotdog/1316.png inflating: hotdog/test/not-hotdog/1231.png extracting: hotdog/test/not-hotdog/1328.png inflating: hotdog/test/not-hotdog/1174.png inflating: hotdog/test/not-hotdog/1051.png inflating: hotdog/test/not-hotdog/1207.png inflating: hotdog/test/not-hotdog/1234.png inflating: hotdog/test/not-hotdog/1125.png inflating: hotdog/test/not-hotdog/1370.png inflating: hotdog/test/not-hotdog/1054.png extracting: hotdog/test/not-hotdog/1228.png inflating: hotdog/test/not-hotdog/1109.png extracting: hotdog/test/not-hotdog/1013.png extracting: hotdog/test/not-hotdog/1240.png extracting: hotdog/test/not-hotdog/1176.png inflating: hotdog/test/not-hotdog/1216.png inflating: hotdog/test/not-hotdog/1106.png inflating: hotdog/test/not-hotdog/1159.png inflating: hotdog/test/not-hotdog/1185.png extracting: hotdog/test/not-hotdog/1064.png inflating: hotdog/test/not-hotdog/1190.png extracting: hotdog/test/not-hotdog/1066.png inflating: hotdog/test/not-hotdog/1156.png inflating: hotdog/test/not-hotdog/1192.png extracting: hotdog/test/not-hotdog/1301.png inflating: hotdog/test/not-hotdog/1255.png inflating: hotdog/test/not-hotdog/1026.png inflating: hotdog/test/not-hotdog/1110.png inflating: hotdog/test/not-hotdog/1088.png extracting: hotdog/test/not-hotdog/1180.png inflating: hotdog/test/not-hotdog/1160.png inflating: hotdog/test/not-hotdog/1282.png extracting: hotdog/test/not-hotdog/1285.png extracting: hotdog/test/not-hotdog/1032.png inflating: hotdog/test/not-hotdog/1133.png inflating: hotdog/test/not-hotdog/1049.png inflating: hotdog/test/not-hotdog/1162.png extracting: hotdog/test/not-hotdog/1151.png inflating: hotdog/test/not-hotdog/1271.png inflating: hotdog/test/not-hotdog/1006.png inflating: hotdog/test/not-hotdog/1326.png inflating: hotdog/test/not-hotdog/1143.png inflating: hotdog/test/not-hotdog/1236.png extracting: hotdog/test/not-hotdog/1272.png inflating: hotdog/test/not-hotdog/1244.png inflating: hotdog/test/not-hotdog/1367.png inflating: hotdog/test/not-hotdog/1277.png extracting: hotdog/test/not-hotdog/1381.png extracting: hotdog/test/not-hotdog/1389.png inflating: hotdog/test/not-hotdog/1372.png extracting: hotdog/test/not-hotdog/1093.png extracting: hotdog/test/not-hotdog/1069.png inflating: hotdog/test/not-hotdog/1385.png inflating: hotdog/test/not-hotdog/1209.png extracting: hotdog/test/not-hotdog/1177.png inflating: hotdog/test/not-hotdog/1324.png inflating: hotdog/test/not-hotdog/1224.png inflating: hotdog/test/not-hotdog/1100.png inflating: hotdog/test/not-hotdog/1339.png extracting: hotdog/test/not-hotdog/1148.png inflating: hotdog/test/not-hotdog/1284.png inflating: hotdog/test/not-hotdog/1208.png extracting: hotdog/test/not-hotdog/1078.png extracting: hotdog/test/not-hotdog/1334.png inflating: hotdog/test/not-hotdog/1019.png inflating: hotdog/test/not-hotdog/1141.png inflating: hotdog/test/not-hotdog/1130.png extracting: hotdog/test/not-hotdog/1265.png inflating: hotdog/test/not-hotdog/1229.png inflating: hotdog/test/not-hotdog/1175.png inflating: hotdog/test/not-hotdog/1261.png inflating: hotdog/test/not-hotdog/1157.png inflating: hotdog/test/not-hotdog/1053.png inflating: hotdog/test/not-hotdog/1152.png inflating: hotdog/test/not-hotdog/1268.png inflating: hotdog/test/not-hotdog/1350.png inflating: hotdog/test/not-hotdog/1232.png extracting: hotdog/test/not-hotdog/1021.png inflating: hotdog/test/not-hotdog/1140.png inflating: hotdog/test/not-hotdog/1230.png inflating: hotdog/test/not-hotdog/1099.png inflating: hotdog/test/not-hotdog/1104.png extracting: hotdog/test/not-hotdog/1398.png extracting: hotdog/test/not-hotdog/1075.png inflating: hotdog/test/not-hotdog/1178.png inflating: hotdog/test/not-hotdog/1260.png inflating: hotdog/test/not-hotdog/1393.png inflating: hotdog/test/not-hotdog/1102.png extracting: hotdog/test/not-hotdog/1009.png inflating: hotdog/test/not-hotdog/1321.png inflating: hotdog/test/not-hotdog/1368.png inflating: hotdog/test/not-hotdog/1233.png inflating: hotdog/test/not-hotdog/1309.png inflating: hotdog/test/not-hotdog/1147.png inflating: hotdog/test/not-hotdog/1119.png inflating: hotdog/test/not-hotdog/1016.png inflating: hotdog/test/not-hotdog/1199.png extracting: hotdog/test/not-hotdog/1001.png inflating: hotdog/test/not-hotdog/1201.png inflating: hotdog/test/not-hotdog/1293.png inflating: hotdog/test/not-hotdog/1108.png inflating: hotdog/test/not-hotdog/1071.png inflating: hotdog/test/not-hotdog/1169.png inflating: hotdog/test/not-hotdog/1058.png inflating: hotdog/test/not-hotdog/1345.png extracting: hotdog/test/not-hotdog/1068.png extracting: hotdog/test/not-hotdog/1135.png inflating: hotdog/test/not-hotdog/1211.png inflating: hotdog/test/not-hotdog/1275.png inflating: hotdog/test/not-hotdog/1336.png inflating: hotdog/test/not-hotdog/1040.png inflating: hotdog/test/not-hotdog/1142.png inflating: hotdog/test/not-hotdog/1101.png inflating: hotdog/test/not-hotdog/1197.png inflating: hotdog/test/not-hotdog/1036.png inflating: hotdog/test/not-hotdog/1170.png inflating: hotdog/test/not-hotdog/1373.png inflating: hotdog/test/not-hotdog/1082.png inflating: hotdog/test/not-hotdog/1000.png inflating: hotdog/test/not-hotdog/1171.png extracting: hotdog/test/not-hotdog/1065.png inflating: hotdog/test/not-hotdog/1349.png inflating: hotdog/test/not-hotdog/1198.png inflating: hotdog/test/not-hotdog/1222.png inflating: hotdog/test/not-hotdog/1077.png inflating: hotdog/test/not-hotdog/1335.png extracting: hotdog/test/not-hotdog/1080.png inflating: hotdog/test/not-hotdog/1091.png extracting: hotdog/test/not-hotdog/1184.png inflating: hotdog/test/not-hotdog/1327.png extracting: hotdog/test/not-hotdog/1358.png extracting: hotdog/test/not-hotdog/1061.png inflating: hotdog/test/not-hotdog/1179.png inflating: hotdog/test/not-hotdog/1329.png inflating: hotdog/test/not-hotdog/1274.png inflating: hotdog/test/not-hotdog/1344.png inflating: hotdog/test/not-hotdog/1221.png inflating: hotdog/test/not-hotdog/1374.png inflating: hotdog/test/not-hotdog/1029.png inflating: hotdog/test/not-hotdog/1395.png inflating: hotdog/test/not-hotdog/1310.png inflating: hotdog/test/not-hotdog/1397.png inflating: hotdog/test/not-hotdog/1243.png inflating: hotdog/test/not-hotdog/1292.png extracting: hotdog/test/not-hotdog/1010.png inflating: hotdog/test/not-hotdog/1187.png inflating: hotdog/test/not-hotdog/1223.png extracting: hotdog/test/not-hotdog/1041.png inflating: hotdog/test/not-hotdog/1253.png inflating: hotdog/test/not-hotdog/1168.png inflating: hotdog/test/not-hotdog/1183.png inflating: hotdog/test/not-hotdog/1382.png inflating: hotdog/test/not-hotdog/1124.png inflating: hotdog/test/not-hotdog/1097.png inflating: hotdog/test/not-hotdog/1072.png creating: hotdog/test/hotdog/ inflating: hotdog/test/hotdog/1379.png inflating: hotdog/test/hotdog/1388.png extracting: hotdog/test/hotdog/1067.png inflating: hotdog/test/hotdog/1383.png inflating: hotdog/test/hotdog/1377.png inflating: hotdog/test/hotdog/1015.png inflating: hotdog/test/hotdog/1172.png inflating: hotdog/test/hotdog/1030.png inflating: hotdog/test/hotdog/1114.png inflating: hotdog/test/hotdog/1186.png inflating: hotdog/test/hotdog/1200.png inflating: hotdog/test/hotdog/1380.png extracting: hotdog/test/hotdog/1247.png inflating: hotdog/test/hotdog/1206.png inflating: hotdog/test/hotdog/1246.png inflating: hotdog/test/hotdog/1227.png inflating: hotdog/test/hotdog/1079.png inflating: hotdog/test/hotdog/1297.png inflating: hotdog/test/hotdog/1378.png inflating: hotdog/test/hotdog/1286.png inflating: hotdog/test/hotdog/1045.png inflating: hotdog/test/hotdog/1138.png inflating: hotdog/test/hotdog/1299.png inflating: hotdog/test/hotdog/1118.png inflating: hotdog/test/hotdog/1047.png inflating: hotdog/test/hotdog/1303.png inflating: hotdog/test/hotdog/1089.png inflating: hotdog/test/hotdog/1033.png inflating: hotdog/test/hotdog/1205.png inflating: hotdog/test/hotdog/1073.png inflating: hotdog/test/hotdog/1305.png inflating: hotdog/test/hotdog/1195.png extracting: hotdog/test/hotdog/1371.png inflating: hotdog/test/hotdog/1392.png inflating: hotdog/test/hotdog/1024.png extracting: hotdog/test/hotdog/1319.png inflating: hotdog/test/hotdog/1287.png inflating: hotdog/test/hotdog/1048.png inflating: hotdog/test/hotdog/1155.png extracting: hotdog/test/hotdog/1217.png inflating: hotdog/test/hotdog/1060.png inflating: hotdog/test/hotdog/1203.png inflating: hotdog/test/hotdog/1090.png inflating: hotdog/test/hotdog/1304.png extracting: hotdog/test/hotdog/1063.png inflating: hotdog/test/hotdog/1387.png inflating: hotdog/test/hotdog/1267.png extracting: hotdog/test/hotdog/1219.png extracting: hotdog/test/hotdog/1182.png inflating: hotdog/test/hotdog/1012.png inflating: hotdog/test/hotdog/1139.png inflating: hotdog/test/hotdog/1257.png inflating: hotdog/test/hotdog/1281.png inflating: hotdog/test/hotdog/1315.png inflating: hotdog/test/hotdog/1028.png extracting: hotdog/test/hotdog/1220.png inflating: hotdog/test/hotdog/1116.png inflating: hotdog/test/hotdog/1191.png inflating: hotdog/test/hotdog/1188.png inflating: hotdog/test/hotdog/1391.png inflating: hotdog/test/hotdog/1034.png inflating: hotdog/test/hotdog/1181.png inflating: hotdog/test/hotdog/1354.png inflating: hotdog/test/hotdog/1105.png extracting: hotdog/test/hotdog/1144.png inflating: hotdog/test/hotdog/1252.png inflating: hotdog/test/hotdog/1249.png extracting: hotdog/test/hotdog/1035.png extracting: hotdog/test/hotdog/1365.png extracting: hotdog/test/hotdog/1347.png inflating: hotdog/test/hotdog/1005.png extracting: hotdog/test/hotdog/1361.png inflating: hotdog/test/hotdog/1038.png inflating: hotdog/test/hotdog/1357.png inflating: hotdog/test/hotdog/1070.png extracting: hotdog/test/hotdog/1399.png extracting: hotdog/test/hotdog/1113.png inflating: hotdog/test/hotdog/1167.png inflating: hotdog/test/hotdog/1112.png inflating: hotdog/test/hotdog/1384.png inflating: hotdog/test/hotdog/1213.png extracting: hotdog/test/hotdog/1342.png inflating: hotdog/test/hotdog/1362.png extracting: hotdog/test/hotdog/1085.png inflating: hotdog/test/hotdog/1131.png inflating: hotdog/test/hotdog/1027.png inflating: hotdog/test/hotdog/1002.png inflating: hotdog/test/hotdog/1254.png inflating: hotdog/test/hotdog/1291.png inflating: hotdog/test/hotdog/1259.png inflating: hotdog/test/hotdog/1121.png inflating: hotdog/test/hotdog/1154.png inflating: hotdog/test/hotdog/1279.png inflating: hotdog/test/hotdog/1044.png inflating: hotdog/test/hotdog/1314.png inflating: hotdog/test/hotdog/1087.png inflating: hotdog/test/hotdog/1311.png inflating: hotdog/test/hotdog/1095.png inflating: hotdog/test/hotdog/1056.png inflating: hotdog/test/hotdog/1289.png inflating: hotdog/test/hotdog/1351.png inflating: hotdog/test/hotdog/1355.png inflating: hotdog/test/hotdog/1352.png inflating: hotdog/test/hotdog/1046.png inflating: hotdog/test/hotdog/1052.png extracting: hotdog/test/hotdog/1043.png inflating: hotdog/test/hotdog/1356.png inflating: hotdog/test/hotdog/1146.png inflating: hotdog/test/hotdog/1283.png inflating: hotdog/test/hotdog/1127.png inflating: hotdog/test/hotdog/1107.png inflating: hotdog/test/hotdog/1248.png inflating: hotdog/test/hotdog/1376.png inflating: hotdog/test/hotdog/1264.png inflating: hotdog/test/hotdog/1394.png inflating: hotdog/test/hotdog/1278.png extracting: hotdog/test/hotdog/1120.png extracting: hotdog/test/hotdog/1226.png inflating: hotdog/test/hotdog/1323.png extracting: hotdog/test/hotdog/1076.png extracting: hotdog/test/hotdog/1083.png extracting: hotdog/test/hotdog/1218.png inflating: hotdog/test/hotdog/1363.png inflating: hotdog/test/hotdog/1092.png inflating: hotdog/test/hotdog/1014.png inflating: hotdog/test/hotdog/1320.png inflating: hotdog/test/hotdog/1074.png inflating: hotdog/test/hotdog/1306.png extracting: hotdog/test/hotdog/1081.png inflating: hotdog/test/hotdog/1212.png inflating: hotdog/test/hotdog/1251.png inflating: hotdog/test/hotdog/1348.png inflating: hotdog/test/hotdog/1166.png inflating: hotdog/test/hotdog/1262.png inflating: hotdog/test/hotdog/1300.png inflating: hotdog/test/hotdog/1263.png extracting: hotdog/test/hotdog/1360.png inflating: hotdog/test/hotdog/1136.png inflating: hotdog/test/hotdog/1164.png extracting: hotdog/test/hotdog/1042.png extracting: hotdog/test/hotdog/1340.png extracting: hotdog/test/hotdog/1007.png inflating: hotdog/test/hotdog/1302.png inflating: hotdog/test/hotdog/1165.png inflating: hotdog/test/hotdog/1031.png inflating: hotdog/test/hotdog/1059.png extracting: hotdog/test/hotdog/1137.png inflating: hotdog/test/hotdog/1337.png inflating: hotdog/test/hotdog/1225.png inflating: hotdog/test/hotdog/1096.png inflating: hotdog/test/hotdog/1308.png inflating: hotdog/test/hotdog/1214.png inflating: hotdog/test/hotdog/1037.png inflating: hotdog/test/hotdog/1386.png inflating: hotdog/test/hotdog/1250.png inflating: hotdog/test/hotdog/1050.png extracting: hotdog/test/hotdog/1318.png inflating: hotdog/test/hotdog/1322.png inflating: hotdog/test/hotdog/1020.png inflating: hotdog/test/hotdog/1325.png inflating: hotdog/test/hotdog/1238.png inflating: hotdog/test/hotdog/1364.png extracting: hotdog/test/hotdog/1098.png inflating: hotdog/test/hotdog/1298.png inflating: hotdog/test/hotdog/1296.png inflating: hotdog/test/hotdog/1153.png inflating: hotdog/test/hotdog/1025.png inflating: hotdog/test/hotdog/1294.png inflating: hotdog/test/hotdog/1117.png extracting: hotdog/test/hotdog/1062.png inflating: hotdog/test/hotdog/1017.png inflating: hotdog/test/hotdog/1276.png inflating: hotdog/test/hotdog/1011.png inflating: hotdog/test/hotdog/1273.png extracting: hotdog/test/hotdog/1317.png inflating: hotdog/test/hotdog/1122.png extracting: hotdog/test/hotdog/1346.png inflating: hotdog/test/hotdog/1134.png inflating: hotdog/test/hotdog/1115.png inflating: hotdog/test/hotdog/1245.png inflating: hotdog/test/hotdog/1270.png extracting: hotdog/test/hotdog/1084.png inflating: hotdog/test/hotdog/1390.png inflating: hotdog/test/hotdog/1269.png inflating: hotdog/test/hotdog/1330.png inflating: hotdog/test/hotdog/1189.png extracting: hotdog/test/hotdog/1022.png inflating: hotdog/test/hotdog/1173.png extracting: hotdog/test/hotdog/1288.png inflating: hotdog/test/hotdog/1239.png inflating: hotdog/test/hotdog/1256.png extracting: hotdog/test/hotdog/1343.png inflating: hotdog/test/hotdog/1193.png inflating: hotdog/test/hotdog/1103.png inflating: hotdog/test/hotdog/1333.png inflating: hotdog/test/hotdog/1204.png inflating: hotdog/test/hotdog/1194.png inflating: hotdog/test/hotdog/1008.png inflating: hotdog/test/hotdog/1215.png inflating: hotdog/test/hotdog/1295.png inflating: hotdog/test/hotdog/1150.png inflating: hotdog/test/hotdog/1242.png inflating: hotdog/test/hotdog/1210.png extracting: hotdog/test/hotdog/1396.png inflating: hotdog/test/hotdog/1055.png extracting: hotdog/test/hotdog/1086.png inflating: hotdog/test/hotdog/1258.png inflating: hotdog/test/hotdog/1145.png inflating: hotdog/test/hotdog/1338.png inflating: hotdog/test/hotdog/1202.png inflating: hotdog/test/hotdog/1353.png inflating: hotdog/test/hotdog/1290.png inflating: hotdog/test/hotdog/1132.png extracting: hotdog/test/hotdog/1235.png inflating: hotdog/test/hotdog/1039.png inflating: hotdog/test/hotdog/1266.png inflating: hotdog/test/hotdog/1023.png inflating: hotdog/test/hotdog/1123.png inflating: hotdog/test/hotdog/1163.png inflating: hotdog/test/hotdog/1111.png extracting: hotdog/test/hotdog/1057.png extracting: hotdog/test/hotdog/1369.png inflating: hotdog/test/hotdog/1331.png extracting: hotdog/test/hotdog/1366.png inflating: hotdog/test/hotdog/1237.png extracting: hotdog/test/hotdog/1307.png inflating: hotdog/test/hotdog/1313.png inflating: hotdog/test/hotdog/1312.png inflating: hotdog/test/hotdog/1126.png inflating: hotdog/test/hotdog/1161.png inflating: hotdog/test/hotdog/1003.png inflating: hotdog/test/hotdog/1018.png inflating: hotdog/test/hotdog/1280.png inflating: hotdog/test/hotdog/1158.png inflating: hotdog/test/hotdog/1128.png inflating: hotdog/test/hotdog/1359.png inflating: hotdog/test/hotdog/1341.png inflating: hotdog/test/hotdog/1375.png inflating: hotdog/test/hotdog/1149.png inflating: hotdog/test/hotdog/1241.png inflating: hotdog/test/hotdog/1094.png inflating: hotdog/test/hotdog/1129.png inflating: hotdog/test/hotdog/1332.png extracting: hotdog/test/hotdog/1196.png inflating: hotdog/test/hotdog/1004.png inflating: hotdog/test/hotdog/1316.png inflating: hotdog/test/hotdog/1231.png inflating: hotdog/test/hotdog/1328.png inflating: hotdog/test/hotdog/1174.png inflating: hotdog/test/hotdog/1051.png inflating: hotdog/test/hotdog/1207.png extracting: hotdog/test/hotdog/1234.png inflating: hotdog/test/hotdog/1125.png extracting: hotdog/test/hotdog/1370.png extracting: hotdog/test/hotdog/1054.png inflating: hotdog/test/hotdog/1228.png inflating: hotdog/test/hotdog/1109.png inflating: hotdog/test/hotdog/1013.png inflating: hotdog/test/hotdog/1240.png extracting: hotdog/test/hotdog/1176.png inflating: hotdog/test/hotdog/1216.png inflating: hotdog/test/hotdog/1106.png inflating: hotdog/test/hotdog/1159.png inflating: hotdog/test/hotdog/1185.png extracting: hotdog/test/hotdog/1064.png inflating: hotdog/test/hotdog/1190.png extracting: hotdog/test/hotdog/1066.png extracting: hotdog/test/hotdog/1156.png inflating: hotdog/test/hotdog/1192.png inflating: hotdog/test/hotdog/1301.png inflating: hotdog/test/hotdog/1255.png inflating: hotdog/test/hotdog/1026.png inflating: hotdog/test/hotdog/1110.png inflating: hotdog/test/hotdog/1088.png inflating: hotdog/test/hotdog/1180.png inflating: hotdog/test/hotdog/1160.png inflating: hotdog/test/hotdog/1282.png inflating: hotdog/test/hotdog/1285.png inflating: hotdog/test/hotdog/1032.png inflating: hotdog/test/hotdog/1133.png inflating: hotdog/test/hotdog/1049.png inflating: hotdog/test/hotdog/1162.png extracting: hotdog/test/hotdog/1151.png inflating: hotdog/test/hotdog/1271.png inflating: hotdog/test/hotdog/1006.png inflating: hotdog/test/hotdog/1326.png extracting: hotdog/test/hotdog/1143.png inflating: hotdog/test/hotdog/1236.png inflating: hotdog/test/hotdog/1272.png inflating: hotdog/test/hotdog/1244.png extracting: hotdog/test/hotdog/1367.png inflating: hotdog/test/hotdog/1277.png inflating: hotdog/test/hotdog/1381.png inflating: hotdog/test/hotdog/1389.png inflating: hotdog/test/hotdog/1372.png inflating: hotdog/test/hotdog/1093.png inflating: hotdog/test/hotdog/1069.png inflating: hotdog/test/hotdog/1385.png inflating: hotdog/test/hotdog/1209.png extracting: hotdog/test/hotdog/1177.png inflating: hotdog/test/hotdog/1324.png inflating: hotdog/test/hotdog/1224.png inflating: hotdog/test/hotdog/1100.png inflating: hotdog/test/hotdog/1339.png inflating: hotdog/test/hotdog/1148.png extracting: hotdog/test/hotdog/1284.png inflating: hotdog/test/hotdog/1208.png inflating: hotdog/test/hotdog/1078.png inflating: hotdog/test/hotdog/1334.png inflating: hotdog/test/hotdog/1019.png extracting: hotdog/test/hotdog/1141.png inflating: hotdog/test/hotdog/1130.png inflating: hotdog/test/hotdog/1265.png inflating: hotdog/test/hotdog/1229.png inflating: hotdog/test/hotdog/1175.png inflating: hotdog/test/hotdog/1261.png inflating: hotdog/test/hotdog/1157.png inflating: hotdog/test/hotdog/1053.png inflating: hotdog/test/hotdog/1152.png inflating: hotdog/test/hotdog/1268.png extracting: hotdog/test/hotdog/1350.png inflating: hotdog/test/hotdog/1232.png inflating: hotdog/test/hotdog/1021.png extracting: hotdog/test/hotdog/1140.png inflating: hotdog/test/hotdog/1230.png inflating: hotdog/test/hotdog/1099.png inflating: hotdog/test/hotdog/1104.png inflating: hotdog/test/hotdog/1398.png inflating: hotdog/test/hotdog/1075.png inflating: hotdog/test/hotdog/1178.png inflating: hotdog/test/hotdog/1260.png inflating: hotdog/test/hotdog/1393.png inflating: hotdog/test/hotdog/1102.png inflating: hotdog/test/hotdog/1009.png extracting: hotdog/test/hotdog/1321.png inflating: hotdog/test/hotdog/1368.png inflating: hotdog/test/hotdog/1233.png inflating: hotdog/test/hotdog/1309.png inflating: hotdog/test/hotdog/1147.png extracting: hotdog/test/hotdog/1119.png inflating: hotdog/test/hotdog/1016.png inflating: hotdog/test/hotdog/1199.png inflating: hotdog/test/hotdog/1001.png inflating: hotdog/test/hotdog/1201.png inflating: hotdog/test/hotdog/1293.png inflating: hotdog/test/hotdog/1108.png inflating: hotdog/test/hotdog/1071.png extracting: hotdog/test/hotdog/1169.png inflating: hotdog/test/hotdog/1058.png inflating: hotdog/test/hotdog/1345.png inflating: hotdog/test/hotdog/1068.png inflating: hotdog/test/hotdog/1135.png inflating: hotdog/test/hotdog/1211.png extracting: hotdog/test/hotdog/1275.png inflating: hotdog/test/hotdog/1336.png extracting: hotdog/test/hotdog/1040.png extracting: hotdog/test/hotdog/1142.png inflating: hotdog/test/hotdog/1101.png inflating: hotdog/test/hotdog/1197.png inflating: hotdog/test/hotdog/1036.png inflating: hotdog/test/hotdog/1170.png inflating: hotdog/test/hotdog/1373.png inflating: hotdog/test/hotdog/1082.png extracting: hotdog/test/hotdog/1000.png inflating: hotdog/test/hotdog/1171.png extracting: hotdog/test/hotdog/1065.png inflating: hotdog/test/hotdog/1349.png inflating: hotdog/test/hotdog/1198.png extracting: hotdog/test/hotdog/1222.png inflating: hotdog/test/hotdog/1077.png inflating: hotdog/test/hotdog/1335.png inflating: hotdog/test/hotdog/1080.png inflating: hotdog/test/hotdog/1091.png inflating: hotdog/test/hotdog/1184.png inflating: hotdog/test/hotdog/1327.png extracting: hotdog/test/hotdog/1358.png inflating: hotdog/test/hotdog/1061.png extracting: hotdog/test/hotdog/1179.png inflating: hotdog/test/hotdog/1329.png inflating: hotdog/test/hotdog/1274.png inflating: hotdog/test/hotdog/1344.png extracting: hotdog/test/hotdog/1221.png inflating: hotdog/test/hotdog/1374.png extracting: hotdog/test/hotdog/1029.png inflating: hotdog/test/hotdog/1395.png inflating: hotdog/test/hotdog/1310.png inflating: hotdog/test/hotdog/1397.png inflating: hotdog/test/hotdog/1243.png inflating: hotdog/test/hotdog/1292.png inflating: hotdog/test/hotdog/1010.png extracting: hotdog/test/hotdog/1187.png extracting: hotdog/test/hotdog/1223.png extracting: hotdog/test/hotdog/1041.png inflating: hotdog/test/hotdog/1253.png inflating: hotdog/test/hotdog/1168.png inflating: hotdog/test/hotdog/1183.png inflating: hotdog/test/hotdog/1382.png extracting: hotdog/test/hotdog/1124.png inflating: hotdog/test/hotdog/1097.png inflating: hotdog/test/hotdog/1072.png
Kiedy korzystamy z sieci pretrenowanej na zbiorze ImageNet, zgodnie z dokumentacją trzeba dokonać standaryzacji naszych obrazów, odejmując średnią i dzieląc przez odchylenie standardowe każdego kanału ze zbioru ImageNet.
All pre-trained models expect input images normalized in the same way, i.e. mini-batches of 3-channel RGB images of shape (3 x H x W), where H and W are
expected to be at least 224. The images have to be loaded in to a range of [0, 1] and then normalized using mean = [0.485, 0.456, 0.406] and std = [0.229,
0.224, 0.225]. You can use the following transform to normalize:
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
torch.manual_seed(17)
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
train_augs = torchvision.transforms.Compose(
[
torchvision.transforms.RandomResizedCrop(224),
torchvision.transforms.RandomHorizontalFlip(),
torchvision.transforms.ToTensor(),
normalize,
]
)
test_augs = torchvision.transforms.Compose(
[
torchvision.transforms.Resize(256),
torchvision.transforms.CenterCrop(224),
torchvision.transforms.ToTensor(),
normalize,
]
)
pretrained_net = torchvision.models.resnet18(
weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1
)
pretrained_net.fc
Linear(in_features=512, out_features=1000, bias=True)
Zadanie 5 (1 punkt)¶
Zastąp wyjściową warstwę liniową naszej fine-fune'owanej sieci nową warstwą o odpowiedniej liczbie wyjść i zainicjuj ją losowymi wartościami.
finetuned_net = pretrained_net
finetuned_net.fc = nn.Linear(512, 2)
nn.init.xavier_uniform_(finetuned_net.fc.weight)
nn.init.zeros_(finetuned_net.fc.bias)
Parameter containing: tensor([0., 0.], requires_grad=True)
assert finetuned_net.fc.out_features == 2
print("Solution is correct!")
Solution is correct!
Poniżej znajduje się pętla ucząca, która dotrenuje nasz detektor hot-dog-ów.
import time
import copy
def train_model(model, dataloaders, criterion, optimizer, num_epochs=25):
since = time.time()
val_acc_history = []
best_model_wts = copy.deepcopy(model.state_dict())
best_acc = 0.0
for epoch in range(1, num_epochs + 1):
print("Epoch {}/{}".format(epoch, num_epochs))
print("-" * 10)
# Each epoch has a training and validation phase
for phase in ["train", "val"]:
if phase == "train":
model.train() # Set model to training mode
else:
model.eval() # Set model to evaluate mode
running_loss = 0.0
running_corrects = 0
# Iterate over data.
for inputs, labels in dataloaders[phase]:
inputs = inputs.to(device)
labels = labels.to(device)
# zero the parameter gradients
optimizer.zero_grad()
# forward
# track history if only in train
with torch.set_grad_enabled(phase == "train"):
# Get model outputs and calculate loss
outputs = model(inputs)
loss = criterion(outputs, labels)
_, preds = torch.max(outputs, 1)
# backward + optimize only if in training phase
if phase == "train":
loss.backward()
optimizer.step()
# statistics
running_loss += loss.item() * inputs.size(0)
running_corrects += torch.sum(preds == labels.data)
epoch_loss = running_loss / len(dataloaders[phase].dataset)
epoch_acc = running_corrects.float() / len(dataloaders[phase].dataset)
print("{} Loss: {:.4f} Acc: {:.4f}".format(phase, epoch_loss, epoch_acc))
# deep copy the model
if phase == "val" and epoch_acc > best_acc:
best_acc = epoch_acc
best_model_wts = copy.deepcopy(model.state_dict())
if phase == "val":
val_acc_history.append(epoch_acc)
print()
time_elapsed = time.time() - since
print(
"Training complete in {:.0f}m {:.0f}s".format(
time_elapsed // 60, time_elapsed % 60
)
)
print("Best val Acc: {:4f}".format(best_acc))
# load best model weights
model.load_state_dict(best_model_wts)
return model, val_acc_history
Fine-tuning...
import os
data_dir = "hotdog"
batch_size = 32
model_ft = finetuned_net.to(device)
train_iter = torch.utils.data.DataLoader(
torchvision.datasets.ImageFolder(
os.path.join(data_dir, "train"), transform=train_augs
),
batch_size=batch_size,
shuffle=True,
)
test_iter = torch.utils.data.DataLoader(
torchvision.datasets.ImageFolder(
os.path.join(data_dir, "test"), transform=test_augs
),
shuffle=True,
batch_size=batch_size,
)
loss = nn.CrossEntropyLoss(reduction="none")
Zadanie 6 (1 punkt)¶
Zmodyfikuj tak parametry sieci, aby learning rate dla ostatniej warstwy był 10 razy wyższy niż dla pozostałych.
Trzeba odpowiednio podać pierwszy parametr torch.optim.SGD tak, aby zawierał parametry normalne, oraz te z lr * 10. Paramety warstw niższych to takie, które mają nazwę inną niż fc.weight albo fc.bias - może się przydać metoda sieci named_parameters().
def train_fine_tuning(net, learning_rate, num_epochs=15):
params_normal = []
params_fc = []
for name, param in net.named_parameters():
if "fc" in name:
params_fc.append(param)
else:
params_normal.append(param)
trainer = torch.optim.SGD(
[
{"params": params_normal, "lr": learning_rate},
{"params": params_fc, "lr": learning_rate * 10},
],
momentum=0.9,
)
dataloaders_dict = {"train": train_iter, "val": test_iter}
criterion = nn.CrossEntropyLoss()
model_ft, hist = train_model(
net, dataloaders_dict, criterion, trainer, num_epochs=num_epochs
)
return model_ft, hist
model_ft, hist = train_fine_tuning(model_ft, learning_rate=5e-5)
Epoch 1/15 ---------- train Loss: 0.5683 Acc: 0.7210 val Loss: 0.3449 Acc: 0.8475 Epoch 2/15 ---------- train Loss: 0.3229 Acc: 0.8710 val Loss: 0.2572 Acc: 0.8963 Epoch 3/15 ---------- train Loss: 0.2856 Acc: 0.8815 val Loss: 0.2279 Acc: 0.9075 Epoch 4/15 ---------- train Loss: 0.2656 Acc: 0.8840 val Loss: 0.2101 Acc: 0.9162 Epoch 5/15 ---------- train Loss: 0.2422 Acc: 0.8990 val Loss: 0.2030 Acc: 0.9162 Epoch 6/15 ---------- train Loss: 0.2315 Acc: 0.9065 val Loss: 0.1835 Acc: 0.9262 Epoch 7/15 ---------- train Loss: 0.2286 Acc: 0.9085 val Loss: 0.1735 Acc: 0.9312 Epoch 8/15 ---------- train Loss: 0.2295 Acc: 0.9035 val Loss: 0.1693 Acc: 0.9362 Epoch 9/15 ---------- train Loss: 0.2244 Acc: 0.9055 val Loss: 0.1606 Acc: 0.9362 Epoch 10/15 ---------- train Loss: 0.1908 Acc: 0.9215 val Loss: 0.1571 Acc: 0.9325 Epoch 11/15 ---------- train Loss: 0.1893 Acc: 0.9195 val Loss: 0.1514 Acc: 0.9387 Epoch 12/15 ---------- train Loss: 0.1920 Acc: 0.9155 val Loss: 0.1518 Acc: 0.9375 Epoch 13/15 ---------- train Loss: 0.2091 Acc: 0.9125 val Loss: 0.1558 Acc: 0.9300 Epoch 14/15 ---------- train Loss: 0.1980 Acc: 0.9160 val Loss: 0.1502 Acc: 0.9337 Epoch 15/15 ---------- train Loss: 0.1854 Acc: 0.9285 val Loss: 0.1510 Acc: 0.9337 Training complete in 4m 42s Best val Acc: 0.938750
skomentuj wyniki:
Wynik bardzo dobry, model powinien radzić sobie dobrze z klasyfikacją hot-doga na obrazach.
Przy wyświetlaniu predykcji sieci musimy wykonać operacje odwrotne niż te, które wykonaliśmy, przygotowując obrazy do treningu:
- zamienić kolejność kanałów z (C, H, W) na (H, W, C)
- zamienić obraz z tensora na tablicę Numpy'a
- odwrócić normalizację (mnożymy przez odchylenie standardowe, dodajemy średnią) i upewnić się, że nie wychodzimy poza zakres [0, 1] (wystarczy proste przycięcie wartości)
def imshow(img, title=None):
img = img.permute(1, 2, 0).numpy()
means = np.array([0.485, 0.456, 0.406])
stds = np.array([0.229, 0.224, 0.225])
img = stds * img + means
img = np.clip(img, 0, 1)
plt.imshow(img)
if title is not None:
plt.title(title)
plt.pause(0.001)
plt.ion()
def visualize_model(model, num_images=6):
class_names = ["hotdog", "other"]
model.eval()
images_so_far = 0
fig = plt.figure()
with torch.no_grad():
for i, (inputs, labels) in enumerate(test_iter):
inputs = inputs.to(device)
labels = labels.to(device)
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
for j in range(inputs.size()[0]):
images_so_far += 1
ax = plt.subplot(num_images // 2, 2, images_so_far)
ax.axis("off")
ax.set_title(f"predicted: {class_names[preds[j]]}")
imshow(inputs.data[j].cpu())
if images_so_far == num_images:
return
visualize_model(model_ft)
Zadanie dodatkowe (3 punkty)¶
W zadaniach dotyczących klasyfikacji obrazu wykorzystywaliśmy prosty zbiór danych i sieć LeNet. Teraz zamień zbiór danych na bardziej skomplikowany, np. ten lub ten (lub inny o podobnym poziomie trudności) i zamiast prostej sieci LeNet użyj bardziej złożonej, np. AlexNet, ResNet, MobileNetV2.
import os
import shutil
from sklearn.model_selection import train_test_split
base_dir = "CUB-200-2011/CUB_200_2011/images"
train_dir = "CUB-200-2011/CUB_200_2011/train"
test_dir = "CUB-200-2011/CUB_200_2011/test"
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)
all_files = []
class_folders = []
for class_folder in os.listdir(base_dir):
class_folder_path = os.path.join(base_dir, class_folder)
if os.path.isdir(class_folder_path):
class_folders.append(class_folder_path)
images = [
os.path.join(class_folder_path, fname)
for fname in os.listdir(class_folder_path)
if fname.endswith(".jpg")
]
if images:
all_files.extend(images)
print(f"Liczba plików w all_files: {len(all_files)}")
train_files, test_files = train_test_split(all_files, test_size=0.3, random_state=1)
for class_folder in class_folders:
class_name = os.path.basename(class_folder)
os.makedirs(os.path.join(train_dir, class_name), exist_ok=True)
os.makedirs(os.path.join(test_dir, class_name), exist_ok=True)
for file in train_files:
class_name = file.split("/")[-2]
shutil.copy(file, os.path.join(train_dir, class_name, os.path.basename(file)))
for file in test_files:
class_name = file.split("/")[-2]
shutil.copy(file, os.path.join(test_dir, class_name, os.path.basename(file)))
print(f"Liczba plików treningowych: {len(train_files)}")
print(f"Liczba plików testowych: {len(test_files)}")
Liczba plików w all_files: 11796 Liczba plików treningowych: 8257 Liczba plików testowych: 3539
import torch.optim as optim
from torchvision import datasets, transforms, models
from torch.utils.data import DataLoader
from sklearn.metrics import precision_score, accuracy_score
import torch.nn as nn
from torchvision.models import ResNet18_Weights
transform = transforms.Compose(
[
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
]
)
train_data = datasets.ImageFolder(root=train_dir, transform=transform)
test_data = datasets.ImageFolder(root=test_dir, transform=transform)
train_loader = DataLoader(train_data, batch_size=32, shuffle=True)
test_loader = DataLoader(test_data, batch_size=32, shuffle=False)
model = models.resnet18(weights=ResNet18_Weights.IMAGENET1K_V1)
model.fc = nn.Linear(model.fc.in_features, 200)
model.to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
def train_model(model, train_loader, criterion, optimizer, epochs=10):
model.train()
for epoch in range(epochs):
running_loss = 0.0
for inputs, labels in train_loader:
inputs, labels = inputs.to(device), labels.to(device)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
print(f"Epoch [{epoch + 1}/{epochs}], Loss: {running_loss / len(train_loader)}")
def test_model(model, test_loader):
model.eval()
all_preds = []
all_labels = []
with torch.no_grad():
for inputs, labels in test_loader:
inputs, labels = inputs.to(device), labels.to(device)
outputs = model(inputs)
_, preds = torch.max(outputs, 1)
all_preds.extend(preds.cpu().numpy())
all_labels.extend(labels.cpu().numpy())
class_accuracies = precision_score(all_labels, all_preds, average=None)
for i, accuracy in enumerate(class_accuracies):
accuracy_percent = accuracy * 100
print(f"Class {test_data.classes[i]} accuracy: {accuracy_percent:.2f}%")
overall_accuracy = accuracy_score(all_labels, all_preds)
print(f"\nOverall model accuracy: {overall_accuracy * 100:.2f}%")
train_model(model, train_loader, criterion, optimizer, epochs=10)
print("--------------------------------------------------")
test_model(model, test_loader)
Epoch [1/10], Loss: 4.082950363748322 Epoch [2/10], Loss: 2.4966899253226615 Epoch [3/10], Loss: 1.7389269979764135 Epoch [4/10], Loss: 1.1959736989271688 Epoch [5/10], Loss: 0.788654561093415 Epoch [6/10], Loss: 0.5094073112176652 Epoch [7/10], Loss: 0.3600762780741375 Epoch [8/10], Loss: 0.2540227419995203 Epoch [9/10], Loss: 0.2518136643995189 Epoch [10/10], Loss: 0.20328625008952894 -------------------------------------------------- Class 001.Black_footed_Albatross accuracy: 29.41% Class 002.Laysan_Albatross accuracy: 40.00% Class 003.Sooty_Albatross accuracy: 70.00% Class 004.Groove_billed_Ani accuracy: 50.00% Class 005.Crested_Auklet accuracy: 45.00% Class 006.Least_Auklet accuracy: 85.71% Class 007.Parakeet_Auklet accuracy: 100.00% Class 008.Rhinoceros_Auklet accuracy: 50.00% Class 009.Brewer_Blackbird accuracy: 100.00% Class 010.Red_winged_Blackbird accuracy: 57.69% Class 011.Rusty_Blackbird accuracy: 27.27% Class 012.Yellow_headed_Blackbird accuracy: 70.00% Class 013.Bobolink accuracy: 62.50% Class 014.Indigo_Bunting accuracy: 58.82% Class 015.Lazuli_Bunting accuracy: 82.35% Class 016.Painted_Bunting accuracy: 88.89% Class 017.Cardinal accuracy: 42.86% Class 018.Spotted_Catbird accuracy: 90.00% Class 019.Gray_Catbird accuracy: 87.50% Class 020.Yellow_breasted_Chat accuracy: 87.50% Class 021.Eastern_Towhee accuracy: 56.52% Class 022.Chuck_will_Widow accuracy: 31.58% Class 023.Brandt_Cormorant accuracy: 50.00% Class 024.Red_faced_Cormorant accuracy: 20.00% Class 025.Pelagic_Cormorant accuracy: 27.27% Class 026.Bronzed_Cowbird accuracy: 77.78% Class 027.Shiny_Cowbird accuracy: 8.82% Class 028.Brown_Creeper accuracy: 50.00% Class 029.American_Crow accuracy: 19.51% Class 030.Fish_Crow accuracy: 10.00% Class 031.Black_billed_Cuckoo accuracy: 54.55% Class 032.Mangrove_Cuckoo accuracy: 27.27% Class 033.Yellow_billed_Cuckoo accuracy: 12.64% Class 034.Gray_crowned_Rosy_Finch accuracy: 46.15% Class 035.Purple_Finch accuracy: 78.26% Class 036.Northern_Flicker accuracy: 92.31% Class 037.Acadian_Flycatcher accuracy: 12.50% Class 038.Great_Crested_Flycatcher accuracy: 14.29% Class 039.Least_Flycatcher accuracy: 9.43% Class 040.Olive_sided_Flycatcher accuracy: 28.00% Class 041.Scissor_tailed_Flycatcher accuracy: 66.67% Class 042.Vermilion_Flycatcher accuracy: 77.78% Class 043.Yellow_bellied_Flycatcher accuracy: 20.00% Class 044.Frigatebird accuracy: 27.03% Class 045.Northern_Fulmar accuracy: 62.50% Class 046.Gadwall accuracy: 100.00% Class 047.American_Goldfinch accuracy: 90.00% Class 048.European_Goldfinch accuracy: 80.00% Class 049.Boat_tailed_Grackle accuracy: 9.80% Class 050.Eared_Grebe accuracy: 57.14% Class 051.Horned_Grebe accuracy: 0.00% Class 052.Pied_billed_Grebe accuracy: 80.00% Class 053.Western_Grebe accuracy: 65.22% Class 054.Blue_Grosbeak accuracy: 100.00% Class 055.Evening_Grosbeak accuracy: 90.00% Class 056.Pine_Grosbeak accuracy: 58.33% Class 057.Rose_breasted_Grosbeak accuracy: 62.50% Class 058.Pigeon_Guillemot accuracy: 66.67% Class 059.California_Gull accuracy: 12.50% Class 060.Glaucous_winged_Gull accuracy: 24.44% Class 061.Heermann_Gull accuracy: 14.89% Class 062.Herring_Gull accuracy: 5.88% Class 063.Ivory_Gull accuracy: 100.00% Class 064.Ring_billed_Gull accuracy: 33.33% Class 065.Slaty_backed_Gull accuracy: 50.00% Class 066.Western_Gull accuracy: 66.67% Class 067.Anna_Hummingbird accuracy: 26.92% Class 068.Ruby_throated_Hummingbird accuracy: 22.73% Class 069.Rufous_Hummingbird accuracy: 61.54% Class 070.Green_Violetear accuracy: 61.54% Class 071.Long_tailed_Jaeger accuracy: 11.76% Class 072.Pomarine_Jaeger accuracy: 33.33% Class 073.Blue_Jay accuracy: 60.00% Class 074.Florida_Jay accuracy: 100.00% Class 075.Green_Jay accuracy: 85.71% Class 076.Dark_eyed_Junco accuracy: 63.64% Class 077.Tropical_Kingbird accuracy: 73.68% Class 078.Gray_Kingbird accuracy: 15.28% Class 079.Belted_Kingfisher accuracy: 37.50% Class 080.Green_Kingfisher accuracy: 48.00% Class 081.Pied_Kingfisher accuracy: 80.00% Class 082.Ringed_Kingfisher accuracy: 100.00% Class 083.White_breasted_Kingfisher accuracy: 84.21% Class 084.Red_legged_Kittiwake accuracy: 32.14% Class 085.Horned_Lark accuracy: 61.54% Class 086.Pacific_Loon accuracy: 75.00% Class 087.Mallard accuracy: 27.27% Class 088.Western_Meadowlark accuracy: 100.00% Class 089.Hooded_Merganser accuracy: 55.00% Class 090.Red_breasted_Merganser accuracy: 55.17% Class 091.Mockingbird accuracy: 18.18% Class 092.Nighthawk accuracy: 100.00% Class 093.Clark_Nutcracker accuracy: 60.00% Class 094.White_breasted_Nuthatch accuracy: 53.85% Class 095.Baltimore_Oriole accuracy: 77.78% Class 096.Hooded_Oriole accuracy: 42.86% Class 097.Orchard_Oriole accuracy: 83.33% Class 098.Scott_Oriole accuracy: 81.82% Class 099.Ovenbird accuracy: 71.43% Class 100.Brown_Pelican accuracy: 21.74% Class 101.White_Pelican accuracy: 100.00% Class 102.Western_Wood_Pewee accuracy: 0.00% Class 103.Sayornis accuracy: 25.00% Class 104.American_Pipit accuracy: 45.45% Class 105.Whip_poor_Will accuracy: 0.00% Class 106.Horned_Puffin accuracy: 41.38% Class 107.Common_Raven accuracy: 33.33% Class 108.White_necked_Raven accuracy: 0.00% Class 109.American_Redstart accuracy: 72.73% Class 110.Geococcyx accuracy: 60.00% Class 111.Loggerhead_Shrike accuracy: 29.63% Class 112.Great_Grey_Shrike accuracy: 14.81% Class 113.Baird_Sparrow accuracy: 50.00% Class 114.Black_throated_Sparrow accuracy: 50.00% Class 115.Brewer_Sparrow accuracy: 37.50% Class 116.Chipping_Sparrow accuracy: 46.67% Class 117.Clay_colored_Sparrow accuracy: 33.33% Class 118.House_Sparrow accuracy: 54.55% Class 119.Field_Sparrow accuracy: 48.15% Class 120.Fox_Sparrow accuracy: 80.00% Class 121.Grasshopper_Sparrow accuracy: 100.00% Class 122.Harris_Sparrow accuracy: 50.00% Class 123.Henslow_Sparrow accuracy: 33.33% Class 124.Le_Conte_Sparrow accuracy: 42.31% Class 125.Lincoln_Sparrow accuracy: 53.33% Class 126.Nelson_Sharp_tailed_Sparrow accuracy: 60.00% Class 127.Savannah_Sparrow accuracy: 33.33% Class 128.Seaside_Sparrow accuracy: 77.78% Class 129.Song_Sparrow accuracy: 50.00% Class 130.Tree_Sparrow accuracy: 37.50% Class 131.Vesper_Sparrow accuracy: 52.38% Class 132.White_crowned_Sparrow accuracy: 25.00% Class 133.White_throated_Sparrow accuracy: 66.67% Class 134.Cape_Glossy_Starling accuracy: 72.73% Class 135.Bank_Swallow accuracy: 0.00% Class 136.Barn_Swallow accuracy: 60.00% Class 137.Cliff_Swallow accuracy: 50.00% Class 138.Tree_Swallow accuracy: 17.24% Class 139.Scarlet_Tanager accuracy: 71.43% Class 140.Summer_Tanager accuracy: 80.77% Class 141.Artic_Tern accuracy: 40.62% Class 142.Black_Tern accuracy: 13.33% Class 143.Caspian_Tern accuracy: 52.94% Class 144.Common_Tern accuracy: 11.11% Class 145.Elegant_Tern accuracy: 31.25% Class 146.Forsters_Tern accuracy: 0.00% Class 147.Least_Tern accuracy: 25.64% Class 148.Green_tailed_Towhee accuracy: 80.00% Class 149.Brown_Thrasher accuracy: 47.37% Class 150.Sage_Thrasher accuracy: 83.33% Class 151.Black_capped_Vireo accuracy: 36.67% Class 152.Blue_headed_Vireo accuracy: 50.00% Class 153.Philadelphia_Vireo accuracy: 45.45% Class 154.Red_eyed_Vireo accuracy: 40.00% Class 155.Warbling_Vireo accuracy: 37.50% Class 156.White_eyed_Vireo accuracy: 55.56% Class 157.Yellow_throated_Vireo accuracy: 55.56% Class 158.Bay_breasted_Warbler accuracy: 80.00% Class 159.Black_and_white_Warbler accuracy: 83.33% Class 160.Black_throated_Blue_Warbler accuracy: 63.64% Class 161.Blue_winged_Warbler accuracy: 54.55% Class 162.Canada_Warbler accuracy: 63.64% Class 163.Cape_May_Warbler accuracy: 80.00% Class 164.Cerulean_Warbler accuracy: 100.00% Class 165.Chestnut_sided_Warbler accuracy: 83.33% Class 166.Golden_winged_Warbler accuracy: 66.67% Class 167.Hooded_Warbler accuracy: 50.00% Class 168.Kentucky_Warbler accuracy: 100.00% Class 169.Magnolia_Warbler accuracy: 87.50% Class 170.Mourning_Warbler accuracy: 26.32% Class 171.Myrtle_Warbler accuracy: 77.78% Class 172.Nashville_Warbler accuracy: 42.31% Class 173.Orange_crowned_Warbler accuracy: 44.44% Class 174.Palm_Warbler accuracy: 33.33% Class 175.Pine_Warbler accuracy: 55.56% Class 176.Prairie_Warbler accuracy: 100.00% Class 177.Prothonotary_Warbler accuracy: 50.00% Class 178.Swainson_Warbler accuracy: 27.59% Class 179.Tennessee_Warbler accuracy: 29.63% Class 180.Wilson_Warbler accuracy: 66.67% Class 181.Worm_eating_Warbler accuracy: 76.92% Class 182.Yellow_Warbler accuracy: 66.67% Class 183.Northern_Waterthrush accuracy: 100.00% Class 184.Louisiana_Waterthrush accuracy: 52.94% Class 185.Bohemian_Waxwing accuracy: 71.43% Class 186.Cedar_Waxwing accuracy: 35.29% Class 187.American_Three_toed_Woodpecker accuracy: 78.95% Class 188.Pileated_Woodpecker accuracy: 44.00% Class 189.Red_bellied_Woodpecker accuracy: 92.86% Class 190.Red_cockaded_Woodpecker accuracy: 71.43% Class 191.Red_headed_Woodpecker accuracy: 72.00% Class 192.Downy_Woodpecker accuracy: 80.00% Class 193.Bewick_Wren accuracy: 21.15% Class 194.Cactus_Wren accuracy: 42.86% Class 195.Carolina_Wren accuracy: 66.67% Class 196.House_Wren accuracy: 31.58% Class 197.Marsh_Wren accuracy: 36.00% Class 198.Rock_Wren accuracy: 50.00% Class 199.Winter_Wren accuracy: 31.43% Class 200.Common_Yellowthroat accuracy: 69.57% Overall model accuracy: 43.57%
/usr/local/lib/python3.10/dist-packages/sklearn/metrics/_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))